Object-C--->Swift之(八)枚举

简介:

声明枚举

Swift使用enum定义枚举,语法格式为

enum 枚举名
{
//使用case关键字列出所有枚举值
//枚举的其他成员
}

Swift即允许每个枚举值单独用一个case关键字,也允许使用一个case定义多个枚举值,多个枚举值之间以英文逗号隔开。枚举名从程序可读性方面来看,swift枚举名必须是有一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分割符。

    enum Weekday
{
case Monday
case Tuesday
case Wednesday
case Thursday
case Friday
case Staturday
case Sunday
}

调用枚举

    var day:Weekday
   day=Weekday.Sunday

当程序可以推断变量的枚举类型时,Swift允许省略枚举值前面的枚举名前缀。

day=.Sunday

枚举值和switch语句

 var chooseDay=Weekday.Sunday
switch(chooseDay)
 {
case .Monday,Tuesday,Wednesday,Thursdayv,Friday:
print("工作日")
 case .Staturdayv,Sunday
print("周末")
}

原始值

可以通过原始值为每一个枚举实例指定一个简单类型(如Int、Double、Float)
语法格式如下:

enum 枚举名:原始值类型
{
case 枚举值=原始值
}

注意Swift并不要求对每个枚举值指定原始值,Swift可以根据已经指定的原始值的枚举来推断它前后所有枚举的枚举值。

enum Weekday:Int
{
case Monday,Tuesday=1,Wednesday,Thursday,Friday,Saturday,Sunday
}

由Tuesday等于1可以推断出Monday等于0,Wedding等于2,以后的等于3、4…
但是字符串不能进行推断,需要给每个枚举都指定原始值。

enum Season:Character
{
case Spring="S"
case Summer="U"
case Fall="F"
case Winter="W"
}

枚举可使用如下构造器和属性

  • init?(rawValue:)可能失败的构造器。因此该* 构造器返回的是包含枚举值的可选类型

  • rawValue:属性(使用枚举实例调用)。获取指定枚举值的原始值。

    var day=Weekday.Staturday
    print(".Saturday的原始值为:\(day.rawValue)")//输出8
    var mySeason=Season(rawValue:"S")
    if mySeason !=nil
    { 
     print(mySeason!)
    print("春天")
    }
    

    注意:可能是一个失败的构造器,所以需要加以判断,否则会造成崩溃。
    关联值
    定义一个枚举时,可以为枚举添加丰富的枚举属性,这和C、Object-C相比,极大的丰富了枚举的作用。

    enum Season
    {
    case Monday(Work:String)
    case Tuesday(Work:String)
    case Wednesday(Work:String)
    case Thursday(Work:String)
    case Friday(Work:String)
    case Staturday(Work:String)
    case Sunday(Work:String)
    }
    var mySeason1=Season.Monday(Work:"工作呀")
    var mySeason2=Season.Sunday(Work:"相亲呀")
    

    访问枚举值的关联值,需要声明额外的变量或常量,并将枚举值的关联值绑定到这些变量或常量。

    Season.Monday(Work:String)=mySeason1
    print("\(Work)")
    
目录
相关文章
|
21天前
|
Swift iOS开发
Swift 枚举
10月更文挑战第28天
25 0
|
6月前
|
前端开发 Java 编译器
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
Object c/swift,java,c/c++在32位和64位各个平台上基本数据类型 所占有的字节数
49 0
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
39 0
|
6月前
|
Swift
Swift 中的枚举(Enum)
Swift 中的枚举(Enum)
51 2
|
Swift
Swift - pods中导入的Object-C文件在桥接文件中写入找不到的问题
Swift - pods中导入的Object-C文件在桥接文件中写入找不到的问题
152 0
|
存储 编译器 Swift
Swift-进阶 08:枚举enum
Swift-进阶 08:枚举enum
624 1
Swift-进阶 08:枚举enum
|
Swift
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
425 0
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
|
存储 编译器 Swift
Swift5.0 - day2-流程控制、函数、枚举(下)
Swift5.0 - day2-流程控制、函数、枚举(下)
81 0
Swift5.0 - day2-流程控制、函数、枚举(下)
|
编译器 Swift C++
Swift5.0 - day2-流程控制、函数、枚举(上)
Swift5.0 - day2-流程控制、函数、枚举(上)
139 0
Swift5.0 - day2-流程控制、函数、枚举(上)
【Swift4】(7) 枚举 | 应用
【Swift4】(7) 枚举 | 应用
117 0

相关课程

更多
下一篇
无影云桌面