Swift学习笔记八:枚举

1.  枚举语法
     1)枚举的定义

      使用enum关键词并且把它们的整个定义放在一对大括号内:

enum SomeEumeration {      // enumeration definition goes here  }  
  下面来看看具体例子:
enum CompassPoint {
    case North
    case South
    case East
    case West
}

     注意:
          ①不像C和Objective-C一样,Swift的枚举成员在被创建时不会被赋予一个默认的整数值。在上面的CompassPoints例子中,North,South,East和West并不是等于0,1,2和3
          ②良好的书写习惯是,每个枚举变量均以大写开头,并且枚举的名字不要使用复数形式

     上面的例子或者也可以这样写:
                     enum CompassPoint { case North, South, East, West }
          将所有成员放在一个case中,并用逗号隔开
        
     2)枚举类型的使用
          枚举类型使用时和使用类的属性一样。
                     var a = CompassPoint . North
     
     3)省略枚举类型
          当 a的类型被推断为CompassPoint的一个可能值时。你可以使用更短的点(.)语法将其设置为另一个CompassPoint的值,省略枚举类型:

var a = CompassPoint.North
a = .South

2. 匹配枚举值和Switch语句

switch a {
case .North:
    println("Lots of planets have a north")
case .South:
    println("Watch out for penguins")
case .East:
    println("Where the sun rises")
case .West:
    println("Where the skies are blue")
}

          重点:
               ①当枚举值和switch语句连用时,也可以省略枚举类型
               ②使用switch时,必须考虑到所有的枚举对象,否则编译器会报错

3. 实例值
     枚举类型可以定义实例值,在使用的时候再给实例赋具体的值

enum test{
    case name(String)
    case count(Int,Int)
}   //枚举定义的是多种不同类型
var a = test.name("小笨狼")    //枚举类型中具体值可以在使用时才赋值
switch a{
case .name(let nameString):     //定义nameString来存放枚举的值,这里是"小笨狼"
    println(nameString)
case let .count(count1,count2): //如果有多个值,可以将let或者var放在括号外面一起定义
    println(count1+count2)
}
          重点:
               ①枚举值可以是不同类型的,任何类型的值
               ②枚举定义时不一定要赋值,可以在使用时再赋值
               ③在switch中使用时,需要再定义变量来存放枚举值

4.原始值
          1) 原始值定义
                    原始值就和C语言中的枚举差不多
enum test:Int{
    case first = 1
    case second,third
}

          重点:
               ①在定义的时候申明原始值类型,这里是 Int 类型。原始值类型可以是 字符串,字符,或者任何整型值或浮点型值
               ②每个原始值在它的枚举声明中必须是唯一的。
               ③当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。这里second=2,third=3
          2)原始值的使用
                使用枚举成员的toRaw方法可以访问该枚举成员的原始值:
                     let a = test . second . toRaw ()      //a=2 Int 类型
                 使用枚举的fromRaw方法可以找到具有特定原始值的枚举成员
          let b = test .fromRaw( 2 )     //b = test.second

5.函数
          枚举中还可以使用函数

enum test:Int{
    case first = 1
    case second,third
    func descript() -> String{
        switch self{
        case .first:
            return  "first"
        case .second:
            return "second"
        case .third:
            return "third"
        }
    }
}
if let c = test.fromRaw(2) {
    println(c.descript())      //输出second
}
打印 c. descript () 输出second,但是如果c不在if中定义,编译器会报错,找不到descript的成员变量,这个问题我还没弄清楚为什么










  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值