zoukankan      html  css  js  c++  java
  • 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的成员变量,这个问题我还没弄清楚为什么










  • 相关阅读:
    算法市场 Algorithmia
    Cucumber
    TeamCity 持续集成工具
    自动化测试
    Selenium
    Android耗时操作
    RecyclerView
    Android报错
    Lakeshore
    BaaS_后端即服务 RESTful
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5213830.html
Copyright © 2011-2022 走看看