<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                在C語言中枚舉名和一個整型值相對應 Swift中的枚舉更加靈活,不必給每?個枚舉成員提供?個值。如果給枚舉成員提供?個值(稱為“原始”值),則該值的類型可以是字符串,字符,或是?個整型值或浮點數。 此外,枚舉成員可以指定任何類型的相關值存儲到枚舉成員值中,就像其他語?中的聯合體(unions)和變體(variants)。你可以定義?組通?的相關成員作為枚舉的?部分,每?組都有不同的?組與它相關的適當類型的數值。 1、枚舉語法 使? enum? 關鍵詞來創建枚舉并且把它們的整個定義放在?對?括號內: ~~~ enum SomeEnumeration { // enumeration definition goes here } ~~~ ~~~ enum CompassPoint { case North case South case East case West } // North,South,East 和 West 不會隱式地賦值為了 0 , 1 , 2 和 3 print(CompassPoint.North) //North //多個成員值可以在同一行上,用逗號隔開 enum T1 { case T11, T12, T13, T14 } print("\(T1.T11), \(T1.T12)") //T11, T12 //每個枚舉定義了一個全新的類型,他們的名字必須以大寫字母開頭 var t2 = T1.T12 //t2的類型可以被推斷出來 let t1 : T1 = .T13 //定義一個變量或常量為枚舉類型的時候,如果指定了變量的枚舉類型,可以使用如上所示的縮寫語法 t2 = .T13 //當t2的類型已知的時候,也可以省略枚舉名 ~~~ 2、匹配枚舉值和switch語句 ~~~ enum Test1 { case TestValue1, TestValue2, TestValue3, TestValue4 } let test : Test1 = .TestValue2 switch test { case .TestValue1: print("\(Test1.TestValue1)") case .TestValue2: print("\(Test1.TestValue2)") case .TestValue3: print("\(Test1.TestValue3)") case .TestValue4: print("\(Test1.TestValue4)") } //switch語句必須窮舉所有的枚舉值,否則不能通過編譯,或者提供一個default分支,此時可以不窮舉所有枚舉值 //TestValue2 ~~~ 3、相關值 可以定義 Swift 的枚舉存儲任何類型的相關值,如果需要的話,每個成員的數據類型可以是各不相同的。枚舉的這種特性跟其他語?中的可辨識聯合(discriminated unions),標簽聯合(tagged unions),或者變體(variants)相似 ~~~ enum MyPhone { case Describe1(String, Int) case Describe2(String) } var phone1 = MyPhone.Describe1("小米", 1) switch phone1 { case MyPhone.Describe1(let param1, let param2) : print("\(param1), \(param2)") case MyPhone.Describe2(let param3): print(param3) } phone1 = .Describe2("小米1") switch phone1 { case MyPhone.Describe1(let param1, let param2) : print("\(param1), \(param2)") case MyPhone.Describe2(let param3): print(param3) } //小米, 1 //小米1 ~~~ 4、原始值 作為相關值的另?種選擇,枚舉成員可以被默認值(稱為原始值)賦值,其中這些原始值具有相同的類型。 原始值可以是字符串,字符,或者任何整型值或浮點型值。每個原始值在它的枚舉聲明中必須是唯?的。 注意: 原始值和相關值是不相同的。當你開始在你的代碼中定義枚舉的時候原始值是被預先填充的值。對于?個特定的枚舉成員,它的原始值始終是相同的。 相關值是當你在創建?個基于枚舉成員的新常量或變量時才會被設置,并且每次當你這么做得時候,它的值可以是不同的。 ~~~ enum OriginalValue : Int { case Age1 = 10 case Age2 = 20 case Age3 = 30 } print(OriginalValue.Age2.rawValue) //20 ~~~ (1)原始值的隱式賦值 ~~~ enum OriginalValue : Int { case Age1 = 10 case Age2 //第一個賦值為10,后面的將隱式賦值,隱式賦值的值依次遞增1 case Age3 } print(OriginalValue.Age2.rawValue) //11 enum OriginalValue1 : Int { case Value1 //如果第一個沒有被賦值,自動賦值為0 case Value2 = 3 case Value3 } print(OriginalValue1.Value1.rawValue) print(OriginalValue1.Value2.rawValue) print(OriginalValue1.Value3.rawValue) //0 //3 //4 ~~~ (2)使?原始值初始化枚舉變量 如果在定義枚舉類型的時候使?了原始值,那么將會?動獲得?個初始化?法,這個?法將原始值類型作為參數,返回枚舉成員或者 nil? 。你可以使?這種初始化?法來創建?個新的枚舉變量。 ~~~ enum ScoreLevel : Int { case Level1 = 1, Level2, Level3, Level4, Level5 } let scoreLevel = ScoreLevel(rawValue: 3) //返回值是可選類型 print(scoreLevel!) //Level3 ~~~ 5、遞歸枚舉 算數表達式的?個重要特性是,表達式可以嵌套使?。例如,表達式 (5 + 4) * 2? 乘號右邊是?個數字,左邊則是另?個表達式。因為數據是嵌套的,因??來存儲數據的枚舉類型也許要?持這種嵌套————這表?枚舉類型需要?持遞歸。 遞歸枚舉(recursive enumeration)是?種枚舉類型,表?它的枚舉中,有?個或多個枚舉成員擁有該枚舉的其他成員作為相關值。使?遞歸枚舉時,編譯器會插??個中間層。你可以在枚舉成員前加上 indirect? 來表?這成員可遞歸。 ~~~ enum ArithmeticExpression { case Number(Int) indirect case Addition(ArithmeticExpression, ArithmeticExpression) indirect case Multiplication(ArithmeticExpression, ArithmeticExpression) } //也可以在枚舉類型開頭加上 indirect 關鍵字來表?它的所有成員都是可遞歸的 indirect enum ArithmeticExpression1 { case Number(Int) //有?個或多個枚舉成員擁有該枚舉的其他成員作為相關值 case Addition(ArithmeticExpression1, ArithmeticExpression1) case Multiplication(ArithmeticExpression1, ArithmeticExpression1) } func evaluate(expression: ArithmeticExpression) -> Int { switch expression { case .Number(let value): return value case .Addition(let left, let right): return evaluate(left) + evaluate(right) //至于這里面怎么操作自己決定 case .Multiplication(let left, let right): return evaluate(left) * evaluate(right) } } // 計算 (5 + 4) * 2 let five = ArithmeticExpression.Number(5) let four = ArithmeticExpression.Number(4) let sum = ArithmeticExpression.Addition(five, four) //計算兩個數相加 print(evaluate(sum)) //這里執行evalute函數,進去后匹配到.Addition分支,分支中left又是.Number類型,返回數值進行計算 let product = ArithmeticExpression.Multiplication(sum, ArithmeticExpression.Number(2)) print(evaluate(product)) //9 //18 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看