Изменения синтаксиса между Swift 2.2 и 3.0
Я нахожусь в процессе преобразования C-программы в Swift. У меня есть 8-битный массив без знака из 64 элементов, который я могу записать в Swift3 как:
let BLAKE2B_KEYBYTES = 64
var mem = [UInt8](repeating: 0, count: BLAKE2B_KEYBYTES)
Swift 2.2, однако, требует этого:
let BLAKE2B_KEYBYTES = 64
var mem = [UInt8](count: BLAKE2B_KEYBYTES, repeatedValue: 0)
Итак, ключевые слова различны, и позиция важна, так как count ДОЛЖЕН предшествовать repeatValue в 2.2, но повторение должно предшествовать count в 3.
Онлайн-документы довольно отрывочны по этим вопросам. Что я не могу найти, так это окончательный документ по синтаксису Swift 2.2. Если кто-нибудь может указать мне на ПРАВДУ на Swift 2.2, я был бы признателен.
1 ответ
Вы ищете ссылку на структуру массива (Swift 2.2), которая имеет синтаксис инициализатора. Вы также можете ⌘-щелкнуть мышью по слову Array в вашем коде, чтобы перейти к интерфейсу / определению Array.
Источником абсолютной истины для Swift 3 и выше является реализация Array в стандартной библиотеке: https://github.com/apple/swift/blob/master/stdlib/public/core/Arrays.swift.gyb#L510-L520