美文网首页
Swift中的枚举

Swift中的枚举

作者: 落叶刺客 | 来源:发表于2017-05-24 09:28 被阅读115次

在Objective-C中,枚举是用来管理一组相关常量的集合,使用枚举可以提高程序的可读性,使代码更容易维护。但是,在Swift中,枚举的作用已经不仅仅是用来定义一组枚举了。在Swift中,枚举还具有一定的面向对象的特点。在Swift中,枚举的声明还是使用关键字enum,其具体格式为:

enum 枚举名 {
    枚举的定义
}

在学习Objective-C的时候,我们知道,枚举的成员值是整数类型。但是在Swift中,其枚举成员值默认情况下不是整数类型,并且在成员值前面还要加上关键字case:

// 声明一个星期枚举
enum Week {
    case Monday
    case Tuesday
    case Wednesday
    case Thursday
    case Friday
    case Saturday
    case Sunday
}

// 枚举的使用
var day = Week.Monday  // 通过“枚举名.成员值”的形式来访问枚举
day = .Tuesday  // 省略枚举名

func whatDayOfTheWeek(day: Week) {
    switch day {
    case .Monday:
        print("忙day")
    case .Tuesday:
        print("求死day")
    case .Wednesday:
        print("未死day")
    case .Thursday:
        print("受死day")
    case .Friday:
        print("福来day")
    case .Saturday:
        print("洒脱day")
    case .Sunday:
        print("伤day")
    }
}

whatDayOfTheWeek(day: day)  // 参数传递的是枚举成员值
whatDayOfTheWeek(day: Week.Wednesday)  // 参数传递的是枚举变量

在使用枚举成员赋值时,我们既可以采用完整的语法进行赋值,也可以通过省略枚举名进行赋值。并且,枚举变量还可以和switch配合使用。不过需要注意,在switch中使用枚举时,case必须包含枚举中所有的成员,而且语句中可以有default,也可以没有default。

在定义枚举时,还可以根据实际情况来提供原始值,并且原始值不限于整型,还可以是字符(串)、浮点数等等。指定原始值的语法为:

enum 枚举名: 数据类型 {
    case 成员名 = 默认值
    ……
}

在指定枚举原始值的默认类型之后,需要给每个成员赋值,并且每隔case的值都不能重复。以上面的代码为例:

// 声明一个星期枚举
enum Week: Int {
    case Monday = 0
    case Tuesday = 1
    case Wednesday = 2
    case Thursday = 3
    case Friday = 4
    case Saturday = 5
    case Sunday = 6
}

// 或者也可以采用简写的语法
enum Week: Int {
    case Monday = 0, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday
}
// 将枚举值转换为原始值
let monday = Week.Monday.rawValue  // 0

let friday = Week.Friday.rawValue  // 4

let saturday = Week.Saturday.rawValue  // 5

采用简写时,如果指定其默认值类型为整型,只需要给第一个成员赋值,后面的成员值会自动加一。要将枚举成员的值转换为原始值,可以用属性rawValue。

相关文章

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift基础语法-枚举,枚举原始值,枚举相关值,switch提

    1. Swift枚举基本概念 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像...

  • 谈谈Swift中的枚举内存布局

    谈谈Swift中的枚举内存布局谈谈Swift中的枚举内存布局

  • swift3.0- 枚举

    Swift枚举 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 枚举

    Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 从零学习Swift 02:枚举和可选项

    一:枚举 枚举的定义Swift中的枚举定义枚举类型很简单: 同 OC不同的是,Swift中的枚举不单单可以是Int...

  • Swift - 枚举

    Swift - 枚举 枚举在C和Swift中有所不同, Swift中的枚举, 更加灵活, 更加强大 C 值类型: ...

  • Swift探索(五): Enum & Optional

    一:枚举(Enum) 1. 枚举的基本用法 Swift 中通过 enum 关键字来声明一个枚举 Swift 中的枚...

  • Swift枚举

    枚举简单认识 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增...

  • Swift-07:枚举enum

    这里先介绍一下swift枚举与oc枚举的区别 OC: 枚举只能为Int类型swift : 可以在枚举中定义方法 可...

网友评论

      本文标题:Swift中的枚举

      本文链接:https://www.haomeiwen.com/subject/qnrnxxtx.html