可能有很多Swift開發者會忽略這麼一個細節:在Swift中,Void類型實際上是一個別名類型,而其真正的類型爲(),即一個空元祖(empty tuple)!ide
這種語言特性給Swift帶來了一些比較方便的表達方式。當()做爲函數返回類型時,它做爲一個類型;當它做爲一個表達式時,則表示一個空元祖。這樣,咱們在返回類型爲()(或Void)的Swift函數中能夠,最後返回一個不幹任何事的空元祖,這在三目表達式中尤其有用。請看如下代碼:函數
var sss = 0 func MyFunc() -> () { return sss == 0 ? (sss = 100) : () } func MyFunc2() -> Void { return sss > 0 ? sss += 100 : (sss += 0) } class ViewController: NSViewController { override func viewDidLoad() { super.viewDidLoad() MyFunc() print("sss = \(sss)") MyFunc2() print("sss = \(sss)") } }
上述代碼中,首先要提醒各位的是,三目表達式中的 : 操做符的優先級要大於 += 操做符,所以這裏(sss += )須要加括號,不然就變成了(sss > 0 ? sss += 100 : sss) += 0了。其次,像 =、+=、-=等等操做符都返回Void,所以若是咱們返回一個非Void的值要把它轉爲Void,用 += 0之類的能作間接轉換。spa
固然,Void只能做爲類型,而不能做爲表達式來用。code