Swift: невозможно получить доступ / установить первый элемент пустого массива по нижнему индексу

Почему нельзя получить доступ / установить первый элемент пустого массива по нижнему индексу?

например:

var array: [Int] = []
array[0] = 1 //fatal error: Index out of range

4 ответа

Решение

От var array: [Int] = [] Вы создаете пустой массив, поэтому он не имеет значений с индексом 0.

Чтобы исправить это вы можете append в массив, как:

array.append(1)
print(array[0]) // 1

или установите массив значений в ваш пустой массив:

array = [1] // another way to do that: "array += [1]"
print(array[0]) // 1

или предопределенный массив, заполненный любыми значениями (например, 0):

let n = 10
array = Array(repeating: 0, count: 10)
array[0] = 0

Инициализация пустого массива в порядке. Затем, если вы хотите получить доступ / установить первый элемент, вам просто нужно сделать:

array.append(1) 

и он сначала будет храниться с индексом 0, и вы можете легко получить к нему доступ: array[0] - но этот доступ только для чтения, а не для добавления. Чтобы добавить значение, вы должны сделать "добавить". Но если массив не пустой, вы можете ИЗМЕНИТЬ это значение, выполнив:

array[0] = 7

Однако, если вы все еще хотите добавить значение по указанному индексу, вы можете использовать:

array.insert(1, at: 0) //value at index

Индекс выходит за пределы диапазона, потому что нет элементов в массиве, поэтому нет индекса 0. Чтобы добавить элемент в массив, вы должны сделать

array.append(1)

После вышеприведенной строки вы можете установить первый элемент:

array[0] = 2

потому что сейчас есть элемент в массиве.

Используйте индекс только тогда, когда вы уверены, что индекс существует в массиве.

Пытаться,

array.append(1)

или же

array.insert(1, at: 0)

или же

array = [1]
Другие вопросы по тегам