zoukankan      html  css  js  c++  java
  • Swift学习-枚举(Enumerations)的使用方法

    Swift学习-枚举的使用方法

    枚举的使用语法:

    enum someEnumer {
        // 枚举的成员值
    }

    以下是方向的一个例子:

    enum direction {
        case Up
        case Down
        case Left
        case Right
    }

    以下摘自Swift 中文翻译组

    注意:
    
    不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值。在上面的CompassPoints例子中,North,South,East和West不是隐式的等于0,1,2和3。相反的,这些不同的枚举成员在CompassPoint的一种显示定义中拥有各自不同的值。

    多个成员值可以出现在同一行上,用逗号隔开:

    enum Name {
        case Kerry, John, Jully, Sally
    }

    我们可以这样取值:

    var someBodyName = Name.John

    someBodyName的类型为已知,我们可以不用写类型名,使用 .成员值 赋值即可:

    someBodyName = .Jully

    匹配枚举值和Switch语句:

    switch someBodyName {
    case .Kerry:
        println("is kerry")
    case .John:
        println("is john")
    case .Jully:
        println("is jully")
    case .Sally:
        println("is sally")
    }

    注意:如果我们没有把所有值都匹配时,我们需要加一个Default默认值,不然编译会报错。

    当不需要匹配全部成员值时,我们需要使用default分支:

    switch someBodyName {
    case .Kerry:
        println("is kerry")
    default:
        print("is somebody name")
    }

    *原始值:

    //以下摘自Swift 中文翻译组
    原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。

    以下是原始值的一个例子。在枚举里也可以定义方法:

    enum age: Int {
        case Young = 0, Child, Old, NoOne
        
        func toAge() -> String {
            // 对自身的原始值进行判断时,使用SELF
            switch self {
            case .Young:
                return "young"
            case .Child:
                return "child"
            case .Old:
                return "old"
            default:
                return "default"
            }
        }
    }

    使用枚举成员的toAge方法可以访问该枚举成员的原始值:

    let other = age.Young.toAge()
    // other: young

     

     


    博文作者:GarveyCalvin

    博文出处:http://www.cnblogs.com/GarveyCalvin/

    本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!

  • 相关阅读:
    【JZOJ3347】树的难题
    【JZOJ3379】查询
    【JZOJ3337】wyl8899的TLE
    【JZOJ3318】Brunhilda的生日
    【JZOJ3319】雪地踪迹
    2018暑假集训——待做且可尝试去做的题
    2018暑假集训专题小结 Part.2
    2018.07.13【省赛模拟】模拟B组 【GDOI2016模拟】作业分配
    2018暑假集训专题小结 Part.1
    2018.07.12【2018提高组】模拟B组 【NOIP2015模拟10.27】魔法阵
  • 原文地址:https://www.cnblogs.com/GarveyCalvin/p/4118126.html
Copyright © 2011-2022 走看看