Swift中的Void類型與空元祖表達式


可能有不少Swift開發者會忽略這么一個細節:在Swift中,Void類型其實是一個別名類型,而其真正的類型為(),即一個空元祖(empty tuple)!

這種語言特性給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之類的能做間接轉換。

當然,Void只能作為類型,而不能作為表達式來用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM