2015-09-18 10 views
5

私のコードスウィフト2.0 migation前:この場合、アンダースコアは何を意味しますか?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "RhymeFavoriten") { 
     // pass data to next view 
     let dest = segue.destinationViewController as! FavoritenViewController 
     let source = segue.sourceViewController as! RhymeViewController // !!!!!! 
     dest.favoritenType = 1 
     dest.delegate = self 
    } 
} 

移行が

func textSelected(selectedText:String, selectedType:Int) { 
     var fullTextArr = text.componentsSeparatedByString("\n") 
     _ = [String]() // !!!!!!!!! 

Iに

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier == "RhymeFavoriten") { 
     // pass data to next view 
     let dest = segue.destinationViewController as! FavoritenViewController 
     _ = segue.sourceViewController as! RhymeViewController // !!!!!!!!!! 
     dest.favoritenType = 1 
     dest.delegate = self 
    } 

または

func textSelected(selectedText:String, selectedType:Int) { 
     var fullTextArr = text.componentsSeparatedByString("\n") 
     var myArray = [String]() // !!!!!! 

に変更してくれました見ることができません、_ =の略:-(

答えて

8

_はプレースホルダーです。つまり、_に割り当てられた値は無視されます。

Xcodeの移行ツールでは、sourceまたはmyArrayをどこでも使用しなかったことが検出されたため、これらの変数がプレースホルダで置き換えられました。

変数に代入される代わりに、segue.sourceViewController as! RhymeViewControllerの戻り結果と[String]()の戻り結果は無視されます。

戻り値は無視されますが、実行時に式が評価されます。副作用があると、これらの影響が発生します。

実際にこれらの手順が必要ない場合は、完全に削除する必要があります。

+0

これらは無視されているのでしょうか、使用されていない変数への参照を保存する必要はないため、コンパイラの最適化ですか? – jarryd

+1

これらは計算(評価)されますが、返された結果(もしあれば)がメモリに割り当てられていない場合は無効になります。 – Moritz

+0

は、実行時ではなくコンパイル時に評価されます。 – jarryd

関連する問題