2016-05-07 20 views
4

私は「++」スウィフト3で削除されることを知っている動作しないコードを交換し、それがraplacedする必要があります。はスウィフト:++廃止されました -

が、このコードで

+ = 1、私は、この値に変更されたとき、私はエラーを取得する:

override func viewDidLoad() { 
    super.viewDidLoad() 

    imageView.image = images[index++] 
    animateImageView() 
} 

私は挿入すると:

imageView.image = images[index += 1] 

私はエラーを取得します。このコードを変更するには?これはイメージの遷移コードです(必要ならば、私は全体のコードを指定します)、Simulatorのすべてで動作しますが、それでも変更したいと思います。

+1

'+ ='は複合代入演算子*と呼ばれます。そして、Cとは異なり、値を返さない。 [Swift Book](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html)に具体的には、 –

答えて

2

このようなインデクサーの外に移動+= 1、:

override func viewDidLoad() { 
    super.viewDidLoad() 
    imageView.image = images[index] 
    index += 1 
    animateImageView() 
} 
+0

ありがとうございます。シンプルなので、どうして私の自己によってそれを理解できなかったのですか?:) これはトリックでした。 –

3

ソリューションは、単にあなたが配列に添字後にする増分を移動することですdasblinkenlightで述べたように。

後置理由は、後置インクリメント演算子を持つことと等価であることに注意してください。 ++indexを使用する場合は、index += 1を添え字の前に移動します。

ここで何が起こっているのかに関する追加の情報です。演算子を関数として想像すると、ここで何が起こっているのかを見ることができます。 +=オペレータがのように、この実装されているとおりである

//++ declared as postfix operator before this. 
funC++ (inout num: Int) -> Int { 
    let temp = num 
    num = num + 1 
    return temp 
} 

func += (inout lhs: Int, rhs: Int) { 
    lhs = lhs + rhs 
} 

をここで注目すべき重要なことは、ということです

++オペレータは、のように、この実装を持っているでしょう++演算子は、サブスクリプトwh内で使用できるIntの値を返します+=は実際にはvoidを返します(または何も返しません)ので、添字の中にIntとして使用することはできません。

+0

お手数をおかけしていただきありがとうございます。私は迅速に新しいですし、私は本当にすべての道を行く準備ができています。私は毎日練習しており、挑戦を愛しています。 :) 私はスウィフトが大好きだと言わなければならず、もっと学ぶのを待つことはできません。再度、感謝します。 –

関連する問題