簡體   English   中英

無法為索引為[[)]的類型為[Int]的值下標

[英]Cannot subscript a value of type '[Int]' with an index of type '()'

我嘗試

  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]中,索引無法轉換為'()'類型的索引

主要問題是+=是一個語句,而不是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]
    }
}

如果我知道這段代碼要實現的目標,那么我會更好地為您提供幫助。

表達式sonkey[index+=1]無效。 Swift 3刪除了諸如index++類的表達式。 我什至不確定Swift 2中的sonkey[index+=1]是什么意思。

如果您的目標是使用index的當前值作為sonkey的下標,然后增加后綴,則現在必須分兩個步驟進行操作:

    sonkey[index+=1] = stable[t]
    index += 1 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM