美文网首页
Swift之枚举(练习)

Swift之枚举(练习)

作者: MZero | 来源:发表于2016-01-19 00:17 被阅读0次

Swift之枚举(笔记)

根据 The Swift Programming Language 中文版 - v1.2敲的
  • 格式
    enum mzenum0{//小写也没有报错(还是大写好一点)
    case enuma,enumb,enumc,enumd
    }

    var someThing0 = mzenum0.enuma
    print(someThing0.dynamicType)//输出类型为mzenum0
    someThing0 = .enumb
    
  • 关联值
    enum mzenum1{
    case enuma(Int,String)
    case enumb(str:String,char:Character)
    //发现关联值定义时可以有参数名,但使用时这个没用
    }

    var someThing1 = mzenum1.enuma(1, "ha")
    var someThing2 = mzenum1.enuma//可以理解成一种新的类型(Int, String) -> mzenum1
    var someThing3 = mzenum1.enumb(str: "ha", char: "h")
    print(someThing1.dynamicType)//输出类型为mzenum1
    print(someThing2.dynamicType)//输出类型为(Int, String) -> mzenum1(类似于函数,闭包)
    
    
    switch someThing1{
        case .enuma:
            print("yes")
        default:
            print("no")
    }
    // 输出yes(关联值可不取)
    switch someThing1{
    case let .enuma(int, str):
        print("yes,\(int),\(str)")
    default:
        print("no")
    }
    // 输出yes,1,ha
    
    switch someThing3{
    case let .enuma(int, str):
        print("yes,\(int),\(str)")
        //关联值定义时可以有参数名,但定义时的参数名用不了
    case var .enumb(str1, char1):
        print("yes,\(str1),\(char1)")
    }
    // 输出yes,ha,h
    
  • 原始值
    enum mzenum2: Int{
    case enuma = 1, enumb, enumc
    }
    print(mzenum2.enumc.rawValue)//输出3

    //实例化
    let someThing4 = mzenum2(rawValue: 2)
    let someThing5 = mzenum2(rawValue: 4)
    print("类型:\(someThing4.dynamicType),\(someThing4)")
    //输出类型:Optional<mzenum2>,Optional(mzenum2.enumb)
    print(someThing5)//输出nil
    
    
    //用字符串作为枚举类型的原始值时,每个枚举成员的隐式原始值为该枚举成员的名称。
    enum mzenum3: String{
        case enuma, enumb, enumc
    }
    print(mzenum3.enumc.rawValue)//输出enumc

相关文章

网友评论

      本文标题:Swift之枚举(练习)

      本文链接:https://www.haomeiwen.com/subject/albkkttx.html