2015-09-18 54 views
5

我的代碼:下劃線在這種情況下意味着什麼?在migation斯威夫特2.0之前

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 
    } 
} 

遷移告訴我將其更改爲

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]() // !!!!!! 

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

我無法看到,什麼是_ =代表:-(

回答

8

_是一個佔位符。這意味着分配給_的值將被忽略。

Xcode的遷移工具進行了更改,因爲它檢測到您沒有在任何地方使用sourcemyArray,因此用佔位符替換了這些變量。

現在,忽略segue.sourceViewController as! RhymeViewController的返回結果和[String]()的返回結果而不是分配給變量。

返回的結果被忽略,但表達式仍然在運行時進行評估:如果它有副作用,將會發生這些影響。

所以,如果你實際上不需要這些說明,你應該完全擺脫它們。

+0

它們被忽略還是隻是一個編譯器優化,因爲沒有必要存儲一個引用到一個未使用的變量? – jarryd

+1

它們被計算(評估),但返回的結果(如果有的話)沒有在內存中分配,它是無效的。 – Moritz

+0

在編譯時而不是運行時評估 – jarryd

相關問題