2016-11-02 10 views
3

を解決することはできません「演算子を変異の左側には変更できません」.. <「不変の値を返します」というエラー変異オペレータのエラー、問題を研究し、私は取得しています

私が読んでもう1つの値は突然変異に関するものですが、その解決策がどのように適用されるかはわかりません。

コード(とコメント):

//populate array of 3 random numbers using correct answer and 2 incorrect choices 

func insertIntoArray3(_ randomNumber: Int) -> Int { 
for intJ in 0 ..< 2 += 1{ 

    if arrayIndex != 3 { 
     checkIfExists(randomNumber) 
     if ifExists { 
      let randomNumber = 1 + random() % 10 
      insertIntoArray3(randomNumber) 
     } else { 
      array3[arrayIndex] = (randomNumber) 
      arrayIndex = arrayIndex + 1 
     } 
    } 

} 
return randomNumber 
} 

改訂コード:

//populate array of 3 random numbers using correct answer and 2 incorrect choices 
func insertIntoArray3(_ randomNumber: Int) -> Int { 

    for _ in 0 ..< 2 + 1{ 

     if arrayIndex != 3 { 
      checkIfExists(randomNumber) 
      if ifExists { 
       let randomNumber = 1 + arc4random() % 10 
       insertIntoArray3(Int(randomNumber)) 
      } else { 
       array3[arrayIndex] = (randomNumber) 
       arrayIndex = arrayIndex + 1 
      } 
     } 

    } 
    return randomNumber 
} 

ありがとうございました!

私はここでも同じエラーを取得しています....

//this function populates an array of the 40 image names 

func populateAllImagesArray() { 
for intIA in 1 ..< 11 += 1 { 

    tempImageName = ("\(intIA)") 
    imageArray.append(tempImageName) 

    tempImageName = ("\(intIA)a") 
    imageArray.append(tempImageName) 

    tempImageName = ("\(intIA)b") 
    imageArray.append(tempImageName) 

    tempImageName = ("\(intIA)c") 
    imageArray.append(tempImageName) 
} 

//println("imageArray: \(imageArray) ") 
//println(imageArray.count) 
} 

改訂:

//this function populates an array of the 40 image names 
func populateAllImagesArray() { 

    for intIA in 1 ..< 11 + 1 { 

     tempImageName = ("\(intIA)") 
     imageArray.append(tempImageName) 

     tempImageName = ("\(intIA)a") 
     imageArray.append(tempImageName) 

     tempImageName = ("\(intIA)b") 
     imageArray.append(tempImageName) 

     tempImageName = ("\(intIA)c") 
     imageArray.append(tempImageName) 
    } 

    //println("imageArray: \(imageArray) ") 
    //println(imageArray.count) 
} 

ありがとうございました!

+0

'for intIA in 1 .. <11 + = 1'ここで '+ = 1'は間違っています。 –

答えて

3

行は次のとおりです。

for intJ in 0 ..< 2 += 1{ 

+=オペレータが、それはスウィフトはそれの左側にあるものは何でも取るように指示することを意味し、変異オペレータあると変更それ、この場合は、右側にあるものを追加します。

ここでSwiftにお伝えしているのは、0 ..< 2とし、(0 ..< 2) + 1に変更してください。 ..<演算子が不変の範囲を返すため、これはエラーをスローします。一度作成すると変更できません。

範囲を変更することができたとしても、それはおそらくあなたがしたいことではありません。

for intJ in 0 ..< 2 + 1{ 

これはちょうど3に右側を回すため、ループが行く:あなただけ=を取り除くと思います。その場合には、多分あなたは右側に1を追加したいように見える状況から、 [0,1,2]。

あるいは、標準的なCスタイルのforループのi += 1のように、たびに1ずつインクリメントするようにしているかもしれません。その場合、あなたはここでそれを必要としません。1によってインデックスは、デフォルトの動作であるので、あなたは全体の+= 1少し出て残すことができます:

for intJ in 0 ..< 2 { 

それとも、1以外の何かにインクリメントする必要がある場合は、あなたがどのように見えるStrideable protocol、使用することができます。

for intJ in stride(from: min, to: max, by: increment) { 

minmaxincrementを適切な番号に置き換えてください。

+0

ありがとうございました!改訂コード: FUNCのinsertIntoArray3(_乱数:INT) - !>のInt {0にするための _ .. <2 + 1 { 場合arrayIndex = 3 { checkIfExists(乱数) ifExists { が許可すれば乱数= 1 + arc4random()%10 insertIntoArray3(INT(乱数)) }他{ ARRAY3 [arrayIndex] =(乱数) arrayIndex = arrayIndex + 1 }} }}乱数 を返します –

0

は、forループでvarを追加

for var intIA in 1 ..< 11 { 

    intIA = intIA+3 
    print("\(intIA)") 
} 

そして、あなたのスニペットの左側の変数が変更可能になります、ここでfor intIA in 1 ..< 11 += 1+=1が正しくありません。エラーを投げ

+0

これも試してみます –

+0

@JimmyMaguireはうまくいきました... –

0

ここには、共通のsetUpTable機能を使用した実際の例があります。

スイフト2:Cスタイルループ

func setupTable() { 
    tableView.setNumberOfRows(nameArray.count, withRowType: "ContactListCell")  
    for i in 0 ..< nameArray.count += 1 { 
     let cell = tableView.rowController(at: Int(i)) as? ContactListCell 
     let nameText = nameArray[i] 
     cell!.nameLabel.setText(nameText) 
    } 
} 

Error: left side of mutating operator isn't mutable "..<" returns immutable value

スウィフト3フィックス:我々はテーブルにそれらを表示できるように、我々はすなわちContactListCellセル列を反復処理している我々のセットアップテーブル。 for i in 0 ..< nameArray.countはすでにインデックスが1であるため、Cスタイルの+= 1構文は必要ありません。

for i in 0 ..< nameArray.count {} 
関連する問題