Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果一个值(被认为是“原始”值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值。此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中。
//定义枚举变量
enum MessageType{
case Text
case Notify
case Voice
case Video
}
//成员值也可以出现在同一行上,用逗号隔开
enum MessageType1{
case Text, Notify, Voice, video
}
//当变量的类型被声明为Messagetype,可以使用更短的点语法将其设置为另一个Messagetype的值
var recievedMessageType = MessageType.Notify
recievedMessageType = .Text
//匹配枚举值和Switch语句(代码比if语句更精炼)
switch recievedMessageType{
case .Text:
print("文本消息")
case .Notify:
print("通知消息")
case .Voice:
print("语音消息")
case .Video:
print("视频消息")
}
//---------------------------------------------------------------
//枚举的相关值:可以定义 Swift 的枚举存储任何类型的相关值,如果需要的话,每个成员的数据类型可以是各不相同的。
enum Barcode {
case UPCA(Int, Int, Int)
case QRCode(String)
}
//声明一个Barcode.UPCA类型的变量
var productBarcode = Barcode.UPCA(8, 85909_51226, 3)
productBarcode = .QRCode("ABCDEFGHIJKLMNOP")
//枚举和switch语句的匹配应用
switch productBarcode {
case .UPCA(let numberSystem, let identifier, let check):
print("UPC-A with value of (numberSystem), (identifier), (check).")
case .QRCode(let productCode):
print("QR code with value of (productCode).")
}
//---------------------------------------------------------------
//枚举的原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。
enum Planet: Int {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
//使用枚举成员的rawValue属性可以访问该成员的原始值
let earthOrder = Planet.Earth.rawValue
//通过原始值找到对应的枚举变量。返回的是一个可选值
let possiblePlanet = Planet(rawValue: 9)
if let possiblePlanet = Planet(rawValue: 9) {
switch possiblePlanet {
case .Earth:
print("地球")
default:
print("其他行星")
}
}else{
print("没有找到9号行星")
}
网友评论