2015-09-18 20 views
5

mã của tôi trước khi migation để Swift 2.0:Dấu gạch dưới có ý nghĩa gì trong trường hợp này?

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

sự di cư nói với tôi để thay đổi nó để

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 
    } 

hoặc

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

tôi không thể thấy, cái gì là _ = đứng cho :-(

Trả lời

8

_ là một trình giữ chỗ. Nó có nghĩa là các giá trị được gán cho _ bị bỏ qua.

Công cụ di chuyển của Xcode thực hiện thay đổi này bởi vì nó đã phát hiện thấy bạn không sử dụng source hoặc myArray ở bất kỳ đâu, do đó thay thế các biến này bằng trình giữ chỗ.

Bây giờ thay vì được chỉ định cho một biến, kết quả trả lại của segue.sourceViewController as! RhymeViewController và kết quả trả về của [String]() bị bỏ qua.

Kết quả trả về bị bỏ qua nhưng biểu thức vẫn được đánh giá trong thời gian chạy: nếu nó có tác dụng phụ, các hiệu ứng này sẽ xảy ra.

Vì vậy, nếu bạn thực sự không cần những hướng dẫn này, bạn nên loại bỏ chúng hoàn toàn.

+0

là chúng bị bỏ qua hoặc nó chỉ là một tối ưu hóa trình biên dịch, vì không cần phải lưu trữ một tham chiếu đến một biến không được sử dụng? – jarryd

+1

Chúng được tính toán (được đánh giá) nhưng kết quả trả về (nếu có) không được chỉ định trong bộ nhớ, nó sẽ bị hủy. – Moritz

+0

được đánh giá tại thời gian biên dịch thay vì thời gian chạy – jarryd

Các vấn đề liên quan