Я хочу инициализировать и сохранить N копий одного и того же объекта в неизменяемом массиве, чтобы длина массива не могла измениться и объекты не могли быть перезаписаны.
Я попытался использовать функцию init(repeating:count:)
для Array
, но создается массив с count
ссылками на аргумент repeating
, если аргумент repeating
не является примитивом.
Приведенный ниже код игровой площадки иллюстрирует проблему:
class Thing { }
let tenThings : [Thing] = Array(repeating: Thing(), count: 10)
if (tenThings[0] === tenThings[1]) {
print("tenThings stores 10 references to the same Thing.")
} else {
print("tenThings stores 10 references to 10 different Things")
}
> tenThings stores 10 references to the same Thing.
Я хочу, чтобы tenThings
сохранил тот же результат, что и этот:
let tenMoreThings: [Thing] = [Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing()]
Я думаю, я мог бы добавить к временному массиву цикл и назначить его дляпусть константный массив, но я надеюсь на более чистое решение.