这里为啥要叫枚举类而不是枚举类型呢?因为Swift中的枚举和C中的枚举很不一样。它已经可以看成一个类,可以看成一个类,可以看成一个类。重要的事情说三遍。此外,它是值传递!
在C中,枚举类型中的每一项都整形,然而在Swift中,你不必为每一项赋值。定义的时候所用的名字就是用来枚举的。当然你也可以为枚举成员赋值,这个赋值不单单是整形,可以是Charater,String,浮点数。
下面定义一个枚举类型。
enum NameSet { //注意首字母已经大写
case Lucy
case Tom
case Kate
case Aaron
}
enum NameSet2{ //可以将枚举成员都写在一行,用逗号分隔
case Lucy, Tom, Kate, Aaron
}
var myName = NameSet.Aaron
myName = .Kate //因为已经声明了myName是NameSet类型,所以改变值的时候可以直接用 .Kate
用来给每一个枚举成员再定义一个补充值。下面是官方的例子。
我们知道商品的条形码和二维码。条形码是由一串数字组成的,这个数字分为了4个部分。而二维码其实是用一串很长的字符来编码的。如果要把二位码和条形码封装成为一个枚举类型,为了更好地区别二者,我们可以加上associated value,定义如下
enum Barcode {
case UPCA(Int, Int, Int, Int) //条形码
case QRCode(String) //二维码
}
定义Barcode变量,同是添加上associated value
var productBarcode = Barcode.UPCA(8, 85909, 51226, 3)
productBarcode = .QRCod