Swift04-可選類型的聲明及使用

/***********可選類型Optionals***********
         在swift中,可選類型其根源是一個枚舉型,裏面有None和Some兩種類型。其實所謂的nil就是Optional.None, 非nil就是Optional.Some, 然後會通過Some(T)包裝(wrap)原始值;
         用於處理值缺失的情況,表示“那兒有一個值,並且等於X”,或者“那兒沒有值”;
         當聲明一個可選類型時,要確保用()給?操作符一個合適的範圍;
         當聲明一個可選變量或者可選屬性的時候沒有提供初始值,它的值會被默認爲nil;
         如果可選類型包含一個值,後邊可以用!來訪問這個值,但是使用!去取值爲nil的可選類型變量會報錯,可以用可選鏈接和可選綁定選擇性執行可選表達式上的操作,如果值爲nil,任何操作都不會執行,也不會運行報錯;
         可選類型類似於OC中指針的nil值,但是nil只對類(class)有用,而可選類型對所有的類型都有用,並且更安全;
         swift語言定義後綴“?”做爲命名類型Optionals的簡寫,下面的兩種聲明方法是相等的
         */
        var optionalsIntager1 : Int?//注意:在類型和?之間沒有空格
        var optionalsIntager2 : Optional<Int>

        optionalsIntager2 = 24
        optionalsIntager2 = 25
        print(optionalsIntager2!)//輸出最後被賦的值:25
        //print(optionalsIntager1!)//會報錯,因爲沒有被賦過值,默認值爲nil


        /*
         強制解析:
         當確定可選類型確實包含值之後,可以在可選類型後邊用!來獲取它的值,這個感嘆號表示“我知道這個可選有值,請使用它”,這就是可選類型的強制解析;
         注意:使用!來獲取一個不存在的可選值會報錯,使用!來進行強制解析之前,一定要確保可選值包含一個非nil的值
         */
        var myStriong: String? = nil
        myStriong = "hello world"
        if myStriong != nil {
            print(myStriong!)
        }else{
            print("字符串爲nil")
        }

        /*
         自動解析:
         可以在聲明可選變量時使用!替換?,這樣可選變量在獲取值時就不需要加一個!來獲取,它會自動解析
         */
        var myString2 : String!
        myString2 = "Vincent"
        if myString2 != nil {
            print(myString2)
        }else{
            print("myString2的值爲nil")
        }

        /*
         可選綁定:
         使用可選綁定來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變量;
         可選綁定可以用在if和while語句中來對可選類型的值進行判斷,並把值賦給一個常量或者變量
         */
        var myString3 : String?
        myString3 = "hello Vincent"
        if let yourString = myString3 {
            print("yourString的值爲:\(yourString)")
        }else{
            print("yourString沒有值")
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章