根据 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
网友评论