用底線消除 Swift 3 的忽略回傳值警告

在 Swift 3,有些我們明明再熟悉不過,幾百年沒變過的程式碼,卻突然多出了煩人的黃色警告,比方呼叫 popViewController 時,莫名冒出了警告訊息 Expression of type ‘UIViewController?’ is unused 。

想了解警告發生的原因,我們必須追究源頭,了解 popViewController 的定義。如下所示,由於 popViewController 回傳 UIViewController 物件,所以 Swift 認為我們理當接收回傳值,而不是不負責任,鐵石心腸地忽略回傳值。

public func popViewController(animated: Bool) -> UIViewController? 

我們自己定義的 function ,其實也會遇到類似問題。比方以下例子,function add 回傳整數。當我們呼叫卻忘了接收回傳值,同樣會有黃色警告,顯示警告訊息 Result of call to ‘add(_:and:)’ is unused。

但是倘若我們就是矯情,不想理會回傳值,不想另外宣告變數或常數儲存呢 ? 辦法還是有的,只要以 _ 接收,即可收了不存不理,Swift 明白我們已盡了責任,已完成接收回傳值的任務。

_ = self.navigationController?.popViewController(animated: true)_ = self.add(10, and: 20)

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store