亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

24.swift枚舉

發布時間:2020-06-20 21:53:34 來源:網絡 閱讀:501 作者:光光ing 欄目:移動開發

import Foundation

/*

Swift枚舉:

Swift中的枚舉比OC中的枚舉強大, 因為Swift中的枚舉是一等類型, 它可以像類和結構體一樣增加屬性和方法

格式:

enum Method{

    case 枚舉值

}

*/


enum Method{

//    case Add

//    case Sub

//    case Mul

//    case Div

    // 可以連在一起寫

    case Add, Sub, Mul, Div

}

// 可以使用枚舉類型變量或常量接收枚舉值

var m: Method = .Add

// 注意: 如果變量或常量沒有指定類型, 那么前面必須加上該值屬于哪個枚舉類型

var m1 = Method.Add



// 利用Switch匹配

// 注意: 如果case中包含了所有的值, 可以不寫default. 如果case中沒有包含枚舉中所有的值, 必須寫default

switch (Method.Add){

    case Method.Add:

        print("加法")

    case Method.Sub:

        print("減法")

    case Method.Mul:

        print("除法")

    case Method.Div:

        print("乘法")

//    default:

//        print("都不是")

}


/*

原始值:

 OC中枚舉的本質就是整數,所以OC中的枚舉是有原始值的,默認是從0開始

Swift中的枚舉默認是沒有原始值的, 但是可以在定義時告訴系統讓枚舉有原始值

enum Method: 枚舉值原始值類型{

    case 枚舉值

}

*/


enum Method2: Int{

    // 可以連在一起寫

    case Add, Sub, Mul, Div

}

// OC中的枚舉一樣, 也可以指定原始值, 后面的值默認+1

enum Method3: Int{

    case Add = 5, Sub, Mul, Div

}


// Swift中的枚舉除了可以指定×××以外還可以指定其它類型, 但是如果指定其它類型, 必須給所有枚舉值賦值, 因為不能自動遞增

enum Method4: Double{

    // 可以連在一起寫

    case Add = 5.0, Sub = 6.0, Mul = 6.1, Div = 8.0

}

// rawValue代表將枚舉值轉換為原始值, 注意老版本中轉換為原始值的方法名叫toRaw

print(Method4.Sub.rawValue)



// 原始值轉換為枚舉值

enum Method5: String{

    case Add = "add", Sub = "sub", Mul = "mul", Div = "div"

}


// 通過原始值創建枚舉值

/*

注意

1.原始值區分大小寫

2.返回的是一個可選值,因為原始值對應的枚舉值不一定存在

3.老版本中為fromRaw("add")

*/

let m2 = Method5(rawValue: "add")

print(m2)


//func chooseMethod(op:Method2)

    func chooseMethod(op:String)

{

    // 由于返回是可選類型, 所以有可能為nil, 最好使用可選綁定

    if let opE = Method5(rawValue: op){

        switch (opE){

        case .Add:

            print("加法")

        case .Sub:

            print("減法")

        case .Mul:

            print("除法")

        case .Div:

            print("乘法")

        }

    }

}



/*

枚舉相關值:

可以讓枚舉值對應的原始值不是唯一的, 而是一個變量.

每一個枚舉可以是在某種模式下的一些特定值

*/

enum lineSegmentDescriptor{

    case StartAndEndPattern(start:Double, end:Double)

    case StartAndLengthPattern(start: Double, length:Double)

}


var lsd = lineSegmentDescriptor.StartAndLengthPattern(start: 0.0, length: 100.0)

lsd = lineSegmentDescriptor.StartAndEndPattern(start: 0.0, end: 50.0)

// 利用switch提取枚舉關聯值

/*

switch lsd

{

    case .StartAndEndPattern(let s, let e):

        print("start = \(s) end = \(e)")

    case .StartAndLengthPattern(let s, let l):

        print("start = \(s) lenght = \(l)")

}

*/


// 提取關聯值優化寫法

switch lsd

{

        case let .StartAndEndPattern(s, e):

            print("start = \(s) end = \(e)")

        case .StartAndLengthPattern(let s, let l):

            print("start = \(s) lenght = \(l)")

}


向AI問一下細節
推薦閱讀:
  1. 枚舉
  2. 枚舉排列

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵东县| 成安县| 内丘县| 江川县| 民乐县| 屯昌县| 长沙市| 襄汾县| 确山县| 沙湾县| 凤城市| 永福县| 平塘县| 无极县| 辽中县| 邻水| 元谋县| 屯留县| 明水县| 滕州市| 揭阳市| 汶川县| 冕宁县| 淮阳县| 镇平县| 临泉县| 专栏| 永靖县| 灵山县| 象山县| 太保市| 井研县| 启东市| 页游| 龙山县| 稷山县| 卫辉市| 剑河县| 抚顺县| 通城县| 浪卡子县|