Swift 枚举(七)

前端之家收集整理的这篇文章主要介绍了Swift 枚举(七)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
枚举

1.枚举语法

用enum并把定义放在大括号内,枚举中被定义的值是枚举的成员,case关键字表示新定义的一个成员
[objc] view plain copy
  1. enumSomeEnumeration{
  2. //enumerationdefinitiongoeshere
  3. }
  4. enumCompassPoint{
  5. caseNorth
  6. caseSouth
  7. caseEast
  8. caseWest
  9. //多个成员可以出现在同一行
  10. enumPlanet{
  11. caseMercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
  12. }
区别于C和OC,Swift中的枚举成员创建的时候不会赋予默认的整数值,相反,不同的成员在CompassPoint的一种显式定义中拥有各自不同的值
每个枚举相当于定义了一个全新的类型,名字以大写开头,尽量使用单数形式易于理解
    vardirectionToHead=CompassPoint.West
  1. directionToHead=.East
  2. //directionToHead定义为CompassPoint类型后,可直接只用点操作符再为其赋枚举里面的其他值

2.匹配枚举值和switch语句

    directionToHead=.South
  1. switchdirectionToHead{
  2. case.North:
  3. println("Lotsofplanetshaveanorth")
  4. case.South:
  5. println("Watchoutforpenguins")
  6. case.East:
  7. println("Wherethesunrises")
  8. case.West:
  9. println("Wheretheskiesareblue")
  10. //prints"Watchoutforpenguins"
当不需要匹配全部成员时,提供一个默认的default来表示所有未被提出的成员
    letsomePlanet=Planet.Earth
  1. switchsomePlanet{
  2. case.Earth:
  3. println("Mostlyharmless")
  4. default:
  5. println("Notasafeplaceforhumans")
  6. //prints"Mostlyharmless"

3.实例值

定义条形码和二维码类型,然后使用其中一种类型创建条码
    enumBarcode{
  1. caseUPCA(Int,Int,Int)
  2. caseQRCode(String)
  3. }
  4. varproductBarcode=Barcode.UPCA(8,85909_51226,3)
  5. //同一种类型的商品可以分配给一个不同类型的条形码
  6. productBarcode=.QRCode("ABCDEFGHIJKLMNOP")
  7. //然后可以直接使用了
  8. switchproductBarcode{
  9. case.UPCA(letnumberSystem,letidentifier,letcheck):
  10. println("UPC-Awithvalueof\(numberSystem),\(identifier),\(check).")
  11. case.QRCode(letproductCode):
  12. println("QRcodewithvalueof\(productCode).")
  13. //prints"QRcodewithvalueofABCDEFGHIJKLMNOP."
  14. //简化写法
  15. caselet.UPCA(numberSystem,identifier,check):
  16. caselet.QRCode(productCode):
  17. //prints"QRcodewithvalueofABCDEFGHIJKLMNOP."

4.原始值 Raw Values

以下说明一个枚举的成员如何声明他们存储不同类型的实例值。作为实例值(原始值)的替代,枚举成员可以被默认值预先填充,他们具有相同的类型
    //枚举成员存储原始ASCII值的例子,ASCIIControlCharacter的枚举的原始值类型被定义为字符类型Character
  1. enumASCIIControlCharacter:Character{
  2. caseTab="\t"
  3. caseLineFeed="\n"
  4. caseCarriageReturn="\r"
  5. }
原始值可以是字符串,字符,或者任何整数类型或浮点型,每一个原始值在声明中必须是唯一的,当整型值用于原始值,如果其他枚举成员没有赋值,则会自动递增
    Planet:Int{
  1. caseMercury=1,0); background-color:inherit">//toRaw方法可以访问枚举成员的原始值
  2. letearthsOrder=Planet.Earth.toRaw()
  3. //earthsOrderis3
  4. //使用枚举的fromRaw方法找具有特定原始值的枚举成员
  5. letpossiblePlanet=Planet.fromRaw(7)
  6. //possiblePlanetisoftypePlanet?andequalsPlanet.Uranus
  7. fromRaw方法可以返回一个可选的枚举成员
  8. letpositionToFind=9
  9. ifletsomePlanet=Planet.fromRaw(positionToFind){
  10. switchsomePlanet{
  11. case.Earth:
  12. println("Mostlyharmless")
  13. default:
  14. println("Notasafeplaceforhumans")
  15. }else{
  16. println("Thereisn'taplanetatposition\(positionToFind)")
  17. //prints"Thereisn'taplanetatposition9"

猜你在找的Swift相关文章