Ответ
Параметр repeating в инициализаторах коллекций Swift используется для быстрого создания массива или буфера, заполненного повторяющимся значением заданное количество раз.
Синтаксис и пример:
// Создание массива из 5 нулей
let arrayOfZeros = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0]
// Создание массива строк
let greetings = Array(repeating: "Hello", count: 3) // ["Hello", "Hello", "Hello"]
// Создание буфера с неинициализированной памятью (для продвинутых сценариев)
let buffer = UnsafeMutableBufferPointer<Int>(repeating: 0, count: 10)
Ключевые особенности и применение:
- Производительность: Это оптимизированный способ выделить и заполнить память, быстрее, чем цикл
append. - Предварительное выделение: Часто используется для создания массива-заготовки, который будет позже заполнен данными.
- Ссылочные типы: Для классов (
reference types) параметрrepeatingсоздаст массив, где все элементы ссылаются на один и тот же экземпляр объекта.class MyClass { var value = 1 } let object = MyClass() let array = Array(repeating: object, count: 3) array[0].value = 100 print(array[2].value) // 100, так как все элементы — одна ссылка. - Поддерживаемые типы:
Array,ContiguousArray,UnsafeMutableBufferPointerи другие.