深入解析Swift编程中枚举类型的相关使用

 更新时间:2015年11月04日 17:24:16   投稿:goldensun  
这篇文章主要介绍了Swift编程中枚举类型的相关使用,是Swift入门学习中的基础知识,需要的朋友可以参考下

枚举是由用户定义的数据类型的一组相关值。关键字 enum 用来定义枚举数据类型。

枚举功能
枚举在 swift 也类似于 C 和 Objective C 中结构类型

  • 它是在一个类中声明,其值是通过该类的实例来访问
  • 初始成员值是用枚举初始化定义的
  • 其功能也扩展确保标准的协议功能

语法
枚举引入 enum 关键字和一对大括号内将它们定义:

复制代码 代码如下:

enum enumname {
   // enumeration values are described here
}

例如,可以为星期定义枚举如下:
复制代码 代码如下:

enum DaysofaWeek {
   case Sunday
   case Monday
    ---
   case Saturday
}

示例
复制代码 代码如下:

enum names{
   case Swift
   case Closures
}
var lang = names.Closures
lang = .Closures
switch lang
{
   case .Swift:
   println("Welcome to Swift")
   case .Closures:
   println("Welcome to Closures")
   default:
   println("Introduction")
}

当我们上面的程序使用 playground 运行,我们得到以下结果

Welcome to Closures

Swift 中的枚举不象 C 和 Objective C 分配其成员的默认值,相反,成员由它们枚举名称明确定义。枚举名称应该使用大写字母(例如:enum DaysofaWeek)。

复制代码 代码如下:

var weekDay = DaysofaWeek.Sunday

这里所述枚举名'DaysofaWeek'被分配给一个变量 weekday.Sunday。它通知编译器数据类型属于周日将被分配给该特定类的后续枚举成员。一旦枚举成员的数据类型定义,其成员可以通过传递值,并进一步计算进行访问。

枚举与Switch语句
Swift 中的 'Switch' 语句也遵循了多路选择。 只有一个变量被以基于指定的条件的特定时间访问。默认情况下,在switch语句用于捕获不确定的情况(case)。

复制代码 代码如下:

enum Climate{
   case India
   case America
   case Africa
   case Australia
}

var season = Climate.America
season = .America
switch season
{
   case .India:
      println("Climate is Hot")
   case .America:
      println("Climate is Cold")
   case .Africa:
      println("Climate is Moderate")
   case .Australia:
      println("Climate is Rainy")
   default:
      println("Climate is not predictable")
}


当我们上面的程序使用 playground 运行,我们得到以下结果

Climte is Cold

该程序首先定义了Climate 作为枚举名称。那么它的成员如, 'China', 'America', 'Africa' 和 'Australia' 声明属于类 'Climate'. 现在成员 America 被分配到一个 Season 变量。此外,Switch case可以找到对应 .America 的值,并跳转到该特定语句。 输出将显示为 “Climate is Cold”。同样,所有成员可以通过 switch 语句访问。 当条件不满足它打印默认内容 'Climate is not predictable'

枚举可进一步划分到相关的值和原始值。

关联值和原始值之间的差异

2015114172325864.png (404×182)

枚举与关联值

复制代码 代码如下:

enum Student{
   case Name(String)
   case Mark(Int,Int,Int)
}
var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
   case .Name(let studName):
      println("Student name is: \(studName).")
   case .Mark(let Mark1, let Mark2, let Mark3):
      println("Student Marks are: \(Mark1),\(Mark2),\(Mark3).")
   default:
      println("Nothing")
}

当我们上面的程序使用 playground 运行,我们得到以下结果

Swift
98
97
95

例如,考虑访问学生的名字和标记固定在三个科目枚举名称被声明为 student ,而在枚举类中的成员名称都属于字符串数据类型,标记表示为 mark1, mark2 和 mark3 数据类型为整数。若要访问的是学生的名字或标记分数:

复制代码 代码如下:

var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)

现在,如果块初执行,switch case 将打印学生姓名,否则它将打印学生固定的标记。 如果这两个条件都失败了,将执行默认块。

枚举与原始值
原始值可以是字符串,字符,或任何整数或浮点数类型。每个原始值必须在其枚举声明中是唯一的。当整数用于原始值,如果指定的一些枚举成员没有任何值,它们会自动递增。

复制代码 代码如下:

 enum Month: Int {
   case January = 1, February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
println("Value of the Month is: \(yearMonth).")


当我们上面的程序使用 playground 运行,我们得到以下结果:

Value of the Month is: 5.

相关文章

  • Swift实现代码混淆详解

    Swift实现代码混淆详解

    本文详细讲解了Swift实现代码混淆的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2021-11-11
  • 如何使用Swift来实现一个命令行工具的方法

    如何使用Swift来实现一个命令行工具的方法

    这篇文章主要介绍了如何使用Swift来实现一个命令行工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Swift 3.1聊天界面键盘效果的实现详解

    Swift 3.1聊天界面键盘效果的实现详解

    这篇文章主要给大家介绍了Swift 3.1聊天界面键盘效果实现的相关资料,文中介绍的非常详细,相信对大家的学习或者工作具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • Swift 3.0基础学习之下标

    Swift 3.0基础学习之下标

    这篇文章主要介绍了Swift 3.0基础学习之下标的相关资料,文中介绍的非常详细,对大家学习或者使用swift具有一定的参考价值,需要的朋友下面来一起看看吧。
    2017-03-03
  • 深入讲解Swift中的模式匹配

    深入讲解Swift中的模式匹配

    在Swift中,一些模式已经被语言特性所吸收,你在使用Swift甚至察觉不出这类问题的存在,下面这篇文章主要给大家介绍了关于Swift中模式匹配的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-08-08
  • 通过Notification.Name看Swift是如何优雅的解决String硬编码

    通过Notification.Name看Swift是如何优雅的解决String硬编码

    这篇文章主要给大家介绍了通过Notification.Name看Swift是如何优雅的解决String硬编码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • Swift中初始化init的方法小结

    Swift中初始化init的方法小结

    Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,下面这篇文章主要给大家介绍了关于Swift中初始化init的相关资料,需要的朋友可以参考下。
    2018-04-04
  • 纯swift实现ipad版简单美团界面功能

    纯swift实现ipad版简单美团界面功能

    这篇文章主要为大家详细介绍了纯swift实现ipad版简单美团界面功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Swift语言中的函数学习教程

    Swift语言中的函数学习教程

    这篇文章主要介绍了Swift语言中的函数学习教程,着重讲了Swift函数的参数传递用法,需要的朋友可以参考下
    2015-11-11
  • Swift中的HTTP模拟测试示例详解

    Swift中的HTTP模拟测试示例详解

    这篇文章主要为大家介绍了Swift中的HTTP模拟测试示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02

最新评论