我试试
func PRGA() {
var l = 256
var i = 0, j = 0, index = 0
while(l > 0) {
i = (i + 1) % 256
j = (j + stable[i]) % 256
let tmp = stable[i]
stable[i] = stable[j]
stable[j] = tmp
let t = (stable[j] + stable[i]) % 256
sonkey[index+=1] = stable[t]
l -= 1
}
}
这可以在swift2.3中工作,但是当我更新到swift3时,无法正常工作,在sonkey中[index + = 1]索引无法转换为类型'()'的索引
答案 0 :(得分:2)
主要问题是+=
是一个语句,而不是Swift中的表达式。它不会计算为可用作下标的Int
值。
但是,您甚至不需要使用+=
手动增加index
,因为您可以使用for
循环更轻松地编写此代码:
func PRGA() {
var i = 0, j = 0
for index in 0..<256 {
i = (i + 1) % 256
j = (j + stable[i]) % 256
swap(&stable[i], &stable[j])
let t = (stable[j] + stable[i]) % 256
sonkey[index] = stable[t]
}
}
如果我知道这段代码试图实现的目的,我会更好地帮助你。
答案 1 :(得分:1)
表达式sonkey[index+=1]
无效。 Swift 3删除了像index++
这样的表达式。我甚至不确定sonkey[index+=1]
在Swift 2中的含义。
如果你的目标是使用索引的当前值作为sonkey
的下标然后增加后缀,你现在必须分两步完成:
sonkey[index+=1] = stable[t]
index += 1