Как создать массив из 16 байтов нулей в Swift 3? [Дубликат]

вы можете установить docx not python-docx

, вы можете увидеть это для установки python-docx

http://python-docx.readthedocs.io/ ан / последний / пользователь / install.html # установить

0
задан Fantattitude 7 August 2015 в 09:59
поделиться

3 ответа

Из Типы коллекций в документации Swift:

Вы не можете использовать синтаксис индекса, чтобы добавить новый элемент в конец массива.

Существуют различные возможные решения:

Создайте массив с требуемым размером, поскольку @Fantattitude сказал:

var array = [UInt8](count: a.count, repeatedValue: 0)
for var i = 0; i < a.count; i++ {
    array[i] = UInt8(a[i]^b[i])
}

Или начните с пустого массива и добавьте элементы , поскольку только что ответил @Christian:

var array = [UInt8]()
for var i = 0; i < a.count; i++ {
    array.append(UInt8(a[i]^b[i]))
}

. «Быстрый» способ в вашем случае, однако, был бы функциональным подходом с zip() и map() :

// Swift 1.2 (Xcode 6.4):
let array = map(zip(a, b), { $0 ^ $1 })
// Swift 2 (Xcode 7):
let array = zip(a, b).map { $0 ^ $1 }

zip(a, b) возвращает последовательность всех пар элементов массива (и останавливается, если более короткий массив из них исчерпан). map() затем вычисляет XOR каждой пары и возвращает результаты в виде массива.

7
ответ дан Martin R 25 August 2018 в 12:35
поделиться

Вы можете инициализировать массив, используя счет вашего второго массива, чтобы не допустить ошибки индекса вне диапазона.

var array = [UInt8](count: a.count, repeatedValue: 0x00)

или вы можете использовать метод добавления массива в своем цикле.

for var i:Int = 0; i < a.count; i++
{
   array.append( UInt8(a[i]^b[i]) )
}
2
ответ дан Christian Abella 25 August 2018 в 12:35
поделиться

Вы можете использовать init(count: Int, repeatedValue: Element) из Array следующим образом:

var array = [UInt8](count: 5, repeatedValue: 0x01)

Чтобы узнать больше о инициализаторах Array, посмотрите здесь: http://swiftdoc.org/swift- 2 / тип / Array /

4
ответ дан Fantattitude 25 August 2018 в 12:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: