importFoundation
//***********************************************************************************************
//1.Enumerations(枚举)
//_______________________________________________________________________________________________
//介绍
//枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值
//如果你熟悉C语言,你就会知道,在C语言中枚举指定相关名称为一组整型值。Swift中的枚举更加灵活,不必给每一个枚举成员(enumeration member)提供一个值。如果一个值(被认为是“原始”值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值
//2.Enumeration Syntax(枚举语法)
//_______________________________________________________________________________________________
//使用enum关键字创建枚举
enumCompassPoint{ //枚举名一般大写,与C不同,Swift中枚举不会默认元素赋值
caseNorth
caseSouth
caseEast,West //多个成员值写在一行时,需要用逗号隔开
}
vardirctionToHead = CompassPoint.North //使用点语法设置获取枚举成员
println(dirctionToHead)
//3.Matching Enumeration Values with a Switch Statement(匹配枚举值和Switch语句)
//匹配单个枚举值和switch语句
dirctionToHead = .South
switchdirctionToHead{
case.North:
println("Lots of planets have a north")
case.South:
println("Watch out for penguins"case.East:
println("Where the sun rise"case.West:
println("Where the sky is blue")
}
//4.Associated Values(关联值)
//你可以为dirction.South设置一个常量或则变量,并且在之后查看这个值。然而,有时候会很有用如果能够把其他类型的关联值和成员值一起存储起来。这能让你随着成员值存储额外的自定义信息,并且当每次你在代码中利用该成员时允许这个信息产生变化
//使用两种不同类型的条码跟踪商品例子来演示枚举关联值
Barcode{ //定义一个Barcode的枚举类型,它可以是UPCA的一个关联值(Int,Int,Int),或者是QRCode的一个字符串的关联值
caseUPCA(Int,Int)
caseQRCode(String)
}
varproductBarcode = Barcode.UPCA(8,767887_786766,216)">3) 使用任意一种条码类型创建新的条码
productBarcode = Barcode.QRCode("skdfhjkskdfjkljdk") 同一个商品可以被分配给不同类型的条码
switchproductBarcode{
case.UPCA(letnumberSystem,letidentifier,162)">letcheck):
println("UPCA with value of\(numberSystem),\(identifier)")
case.QRCode(letproductCode):
println("QR code with value of\(productCode)")
}
//4.Raw Value(原始值)
//在关联值小节的条形码例子中演示了一个枚举的成员如何声明它们存储不同类型的关联值。作为关联值的替代,枚举成员可以被默认值(称为原始值)预先填充,其中这些原始值具有相同的类型
//枚举成员存储原始ASCII值的实例演示枚举原始值定义
enumASCIIControlCharacter:Character{
caseTab ="\t" //设置枚举成员的原始值,当整型数被用作枚举成员的原始值时,成员后面的成员原始值依次递增
caseLineFeed ="\n"
caseCarriageReturn ="\r"
}
enumPlant:Int{
caseMercury =1,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
}
letearthOrder = Plant.Earth.rawValue 获取到了earthOrder的原始值
println(earthOrder)
//使用rawValue方法试图找到具有特定原始值的枚举成员
letpossiblePlant = Plant(rawValue: 7)
使用rawValue返回一个可选的枚举值
println(possiblePlant)
//_______________________________________________________________________________________________
letpositionToFind =9
ifletsomePlant = Plant(rawValue: positionToFind){ 当使用rawValue方法无法找到特定的原始值的枚举成员的时候,返回nil
switchsomePlant{
case.Earth:
println("Mostly harmless")
default:
println("Not a safe place for humans")
}
}
else{
println("There isn't a plant at position\(positionToFind)")
}
转载:http://blog.csdn.net/u013096857/article/details/37871473
原文链接:/swift/327678.html