swift 枚举
枚举允许用户定义一组相关联的值,然后以一个安全的方式来使用它。 定义枚举先来定义一个简单的枚举Direction enum Direction{
case Left
case Right
case Top
case Bottom
}
每个值都定义在一个case后面。也可以使用一个case来定义一组值,像这样 enum Direction{
case Left,Right,Top,Bottom
}
当然,也可以这样 enum Direction{
case Left,Right
case Top
case Bottom
}
以上代码都定义了一个相同的Direction枚举,包含四个值。 遍历枚举通常情况下我们使用switch来遍历枚举 //先声明一个枚举变量
var myDirection = Direction.Right
switch myDirection{
case Direction.Left :
print("myDirection is left")
case .Right :
print("myDirection is right")
default:
print("myDirection is others")
}
需要注意的是,在swift中,switch代码段中,每一个case的后面不需要加 已知类型可省略类型名当一个枚举变量的类型已知时,我们使用枚举成员时可以省去类型名,如上面的 myDirection = .Top
尽管这样子写的话,代码更加精简,但是为了使代码保持更高的可读性,还是建议不要省去类型名。 原始值(Raw value)我们可以为所有枚举成员指定一个某类型的值,例如 enum Direction :Int{
case Left = 1,Right,Top,Bottom
}
上面的代码为Direction枚举的原始值指定为Int类型,并且给第一个值赋值。当然,我可以分别为每一个成员指定一个原始值。如果我只指定了一个,则同一个case下的值会自动生成。上面的四个成员的值分别为:1,2,3,4 enum Direction :Int{
case Left = 1,Right
case Top = 101,Bottom
}
则四个成员的原始值分别为:1,2,101,102 myDirection = Direction.Bottom
//获取枚举对象的原始值
print(myDirection.rawValue)
//根据某个原始值来生成枚举对象
var direction2 = Direction(rawValue: 2)
if let value = direction2 {
print(value)
}
关联值(Associated value)关联值的特性让swift的枚举更加强大。swift允许我们给枚举的所有成员指定不同类型的关联值! enum Gender{
case Male(String,String)
case Female(String,Int)
}
然后声明两个Gender类型的变量,一男一女 var lilei=Gender.Male("lilei","programmer")
var hanmeimei=Gender.Female("hanmeimei",21)
然后我定义一个函数来打印这两个变量的信息 func printGender(genderItem :Gender){
switch genderItem {
case .Male(let name,let profession) :
print("(name) is a (profession)")
case .Female(let name,let age):
print("(name) is (age) years old")
}
}
//调用该函数
printGender(lilei)
printGender(hanmeimei)
上面代码的输出结果为: 枚举的常用方法已经介绍完了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |