来自
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()
and 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 并将结果作为数组返回。