您的位置:首页 > 移动开发 > Swift

swift 枚举

2014-07-20 20:49 447 查看

枚举

枚举不是类型..而是值.枚举定义了一个通用类型的一组相关的值 什么时候用枚举?

一组通用类型,用枚举..需要存储可能会改变的数据使用相关值..存储唯一且不变的值使用原始值

通用类型:

方向 : 枚举成员类型本身就不同..所以不需要值

码,条形码,二维码:都是码,枚举成员类型不同,但需求每个码中存储值...相关值

枚举的值:1.可以再枚举中存储可以改变的相关值..2.枚举成员可以被默认值(称为原始值)预先填充,其中这些原始值具有相同的类型。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。


原始值和相关值是不相同的。当你开始在你的代码中定义枚举的时候原始值是被预先填充的值,像上述三个 ASCII 码。
对于一个特定的枚举成员,它的原始值始终是相同的。
相关值是当你在创建一个基于枚举成员的新常量或变量时才会被设置,并且每次当你这么做得时候,它的值可以是不同的。

enum CompassPoint {
case North
case South
case East
case West
}

不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值

。在上面的CompassPoints例子中,North,South,East和West不是隐式的等于0,1,2和3。

相反的,这些不同的枚举成员在CompassPoint的一种显示定义中拥有各自不同的值。

每个枚举定义了一个全新的类型。像 Swift 中其他类型一样,它们的名字(例如CompassPoint和Planet)必须以一个大写字母开头。

给枚举类型起一个单数名字而不是复数名字

directionToHead的类型被推断为CompassPoint的一个可能存在的类型,值为该枚举类型的值.当被定义后,可以使用.+枚举类型.进行修改其类型

var directionToHead = CompassPoint.West  //CompassPoint?
directionToHead = .East

//相关值
enum Barcode {
case UPCA(Int, Int, Int)
case QRCode(String)
}
var productBarcode = Barcode.UPCA(8, 85909_51226, 3)
productBarcode = .QRCode("ABCDEFGHIJKLMNOP")

//原始值
enum ASCIIControlCharacter: Character {
case Tab = "\t"
case LineFeed = "\n"
case CarriageReturn = "\r"
}
enum Planet: Int {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: