2015-09-18 2 views
5

мой код перед migation к Swift 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]() // !!!!!!!!! 

I не может видеть, что такое _ = для :-(

ответ

8

_ является заполнителем. Это означает, что значения, назначенные _, игнорируются.

Инструмент миграции Xcode внес изменения, поскольку обнаружил, что вы не использовали source или myArray в любом месте, заменив эти переменные на местозаполнителем.

Теперь вместо присвоения переменной возвращаемый результат segue.sourceViewController as! RhymeViewController и возвращаемый результат [String]() игнорируются.

Результат возврата игнорируется, но выражение по-прежнему оценивается во время выполнения: если оно имеет побочные эффекты, эти эффекты будут возникать.

Так что, если вам действительно не нужны эти инструкции, вы должны полностью избавиться от них.

+0

игнорируются или это просто оптимизация компилятора, так как нет необходимости хранить ссылку на переменную, которая не используется? – jarryd

+1

Они вычисляются (оцениваются), но возвращаемый результат (если есть) не назначается в памяти, он аннулируется. – Moritz

+0

оценивается во время компиляции, а не во время выполнения – jarryd

Смежные вопросы