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]