#arrays #swift
#массивы #swift
Вопрос:
Если я создаю массивы из другого массива, например :
var ArrayOne = [1,2,3,4]
var ArrayTwo = ArrayOne
var ArrayThree = ArrayTwo
Теперь в соответствии с назначением и поведением копирования массива, если я изменю какое-либо значение из arrayTwo, это будет отражено в arrayOne и ArrayThree. но если я добавлю / удалю в arrayTwo, это не отразится в arrayOne / ArrayThree, потому что экземпляр массива изменяется.
ArrayTwo[0] = 100
println(ArrayTwo[0])
// 100
println(ArrayThree[0])
// 100
и
ArrayTwo.append(5)
ArrayTwo[0] = 999
println(ArrayTwo[0])
// 999
println(ArrayThree[0])
// 100
Есть ли какой-либо способ изменить весь массив одновременно без создания новой копии / экземпляра массива при каждой модификации (добавление / удаление).
Комментарии:
1. Просто используйте дополнительную косвенность.
Ответ №1:
Массивы, словари и строки являются структурами и передаются по значению в Swift. Чтобы добиться такого поведения, вы могли бы попробовать использовать NSArray или создать свой собственный класс Swift.