• Swift面向对象基础(上)——Swift中的枚举


    Swift中枚举

    学习笔记来自《极客学院》

     1 import Foundation
     2 
     3 /**********1*Swift定义枚举的语法格式*************/
     4 /*
     5 enum 枚举名 {
     6     使用case关键字列出所有枚举值
     7     枚举的其他成员
     8 }
     9 */
    10 //定义枚举
    11 enum Season{
    12     case Spring
    13     case Summer
    14     case Fall
    15     case Winter
    16 }
    17 //使用一个case列举所有的值
    18 enum Season2{
    19     case Spring,Summer,Fall,Winter
    20 }
    21 //使用枚举声明变量
    22 var weather : Season//这里就是声明一个Season 类型的变量weather
    23 weather = .Summer//或者是:weather = Season.Summer
    24 println("1:(weather)")
    25 
    26 var enum_1 = Season.Winter//直接用类型推断也可以
    27 switch(enum_1){
    28 case .Spring:
    29     println(Season.Spring)
    30 case .Summer:
    31     println(Season.Summer)
    32 default:
    33     println("在家里")
    34 }//switch中的case没有覆盖枚举的所有值,必须添加default语句,也就是说如果列出了枚举所有的值,就可以删掉default语句了
    35 
    36 
    37 /**********2*原始值*************/
    38 /*
    39 enum 枚举值 : 原始值类型{
    40     case 枚举值 = 原始值
    41 }
    42 */
    43 enum Weekday : Int{
    44     case Mon,Tur,Wen = 4,Thur,Fri,Sat,Sun
    45 }//因为这里都是整形所以会自动推断他们分别是1~7
    46 println(Weekday.Wen)//不知道结果为甚是这样的:(Enum Value)
    47 
    48 //所以获取枚举的 原始值
    49 println(Weekday.Mon.rawValue)
    50 println(Weekday.Tur.hashValue)
    51 
    52 enum Season3 : Character{
    53     case Spring = ""
    54     case Summer = ""
    55     case Fall = ""
    56     case Winter = ""
    57 }//但是上面类型的推断仅仅局限在整型的情况下,swift会自动推断
    58 
    59 //根据原始值来获取枚举值,调用的事构造器,这个构造器是可选类型:init?(rawValue:)
    60 var mySeason = Season3(rawValue: "")
    61 if mySeason != nil{
    62     switch(mySeason!){//需要间接解包
    63     case .Spring:
    64         println("春天不是读书天")
    65     case .Summer:
    66         println("夏天炎炎正好呢")
    67     case .Fall,.Winter:     //这里表示“或”
    68         println("秋多蚊蝇冬日冷")
    69     default:
    70         println("读书只好等明年")
    71     }
    72 }
    73 
    74 
    75 /**********3*关联值*************/
    76 //在每个枚举值后面添加括号扩起来的关联值,然后关联值个数是0~多个,然后定义类型值,当然也可以仅仅只有类型,不需要关联值名称
    77 enum Planet {
    78     case Earth(weight: Double,name: String)
    79     case Mars(density: Double,name:String,weight:Double)
    80     case Venus(Double,String)
    81     case Saturn
    82     case Neptune
    83 }//其实这后面括号扩起来的就是元祖
    84 //获取枚举值,系统还会自动提示,这个操作一下就能明白了
    85 var p1 = Planet.Earth(weight: 23, name: "hah")
    86 //接下来就是得到这些关联值,要得到这些关联值,就要声明额外的变量
    87 //但是下面直接用的是switch语句
    88 switch(p1){
    89 case Planet.Earth(var weight,var name):
    90     println("(name)~~~~~~~~~(weight)")
    91 case let Planet.Mars(density:d,name:n,weight:dou):
    92     println("(d)")
    93 default:
    94     break
    95 }
  • 相关阅读:
    swift中? ! weak unowned以及动态时语言理解
    线程状态---Day24
    线程安全---Day23
    线程---Day22
    异常---Day21(写得有错请指出,感谢)
    Java之路---Day18(List集合)
    Java之路---Day17(数据结构)
    Java之路---Day16(泛型)
    Hoeffding不等式证明
    事件绑定之.bind()
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4649504.html
Copyright © 2020-2023  润新知