枚举是用户定义的数据类型,由一组相关的值组成。关键字枚举用于定义枚举数据类型。
枚举功能
swift中的枚举也类似于C和Objective C的结构。
它在一个类中声明,其值通过该类的实例访问。
初始成员值使用枚举初始化定义。
其功能也通过确保标准协议功能得到扩展。
用法
枚举与枚举关键字一起引入,并将其整个定义放在一对大括号中 -
enumenumname{// enumeration values are described here}
例如,您可以定义一个星期几的枚举如下 -
enum DaysofaWeek {
case Sunday
case Monday
---
case Saturday
}
例
enumnames{caseSwiftcaseClosures}varlang=names.Closureslang=.Closuresswitchlang{case.Swift:println("Welcome to Swift")case.Closures:println("Welcome to Closures")default:println("Introduction")}
当我们使用游乐场运行上述程序时,我们得到以下结果 -
Welcome to Closures
Swift枚举不分配其成员默认值,如C和Objective C.而是通过其枚举名称明确定义成员。枚举名称应以大写字母开头(例如:枚举DaysofaWeek)。
varweekDay=DaysofaWeek.Sunday
这里枚举名称“DaysofaWeek”被分配到一个变量weekday.Sunday。它通知编译器数据类型属于星期日将被分配给该特定类的后续枚举成员。一旦定义了枚举成员数据类型,可以通过传递值和进一步的计算来访问成员。
带switch的枚举
Swift"Switch"语句也遵循多路选择。根据指定的条件,在特定时间只能访问一个变量。switch语句中的默认情况用于捕获未指定的情况。
enumClimate{caseIndiacaseAmericacaseAfricacaseAustralia}varseason=Climate.Americaseason=.Americaswitchseason{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")}
当我们使用游乐场运行上述程序时,我们得到以下结果 -
Climate is Cold
该程序首先将“气候”定义为枚举名称。那么其成员如“印度”,“美国”,“非洲”和“澳大利亚”宣称属于“气候”阶层。现在美国成员被分配到季节变量。此外,Switch case会看到对应于.America的值,它将分支到该特定语句。输出将显示为“气候寒冷”。同样,所有成员都可以通过switch语句访问。当条件不满足时,默认打印“气候不可预测”。
枚举可以进一步分类为相关值和原始值。
相关值与原始值之间的差异
相关值
原始值
不同的数据类型
相同的数据类型
例如:枚举{10,0.8,“你好”}
例如:枚举{10,35,50}
值是基于常量或变量创建的
人口普遍值
每次宣布时变化
会员的价值是一样的
枚举与关联值
enumStudent{caseName(String)caseMark(Int,Int,Int)}varstudDetails=Student.Name("Swift")varstudMarks=Student.Mark(98,97,95)switchstudMarks{case.Name(letstudName):println("Student name is: (studName).")case.Mark(letMark1,letMark2,letMark3):println("Student Marks are: (Mark1),(Mark2),(Mark3).")default:println("Nothing")}
当我们使用游乐场运行上述程序时,我们得到以下结果 -
Swift
98
97
95
例如,访问学生姓名和三个科目中的安全标记枚举名称被声明为学生,并且在枚举类中存在的成员是属于字符string数据类型的名称,标记表示为数据类型整数的mark1,mark2和mark3。访问学生姓名或他们得分的标记。
var studDetails = Student.Name("Swift")
var studMarks = Student.Mark(98,97,95)
现在,如果执行该案例块,交换机案例将打印学生姓名,否则将打印由学生保护的标记。如果两个条件都失败,则将执行默认块。
枚举与原始值
原始值可以是字符string,字符或任何整数或浮点数类型。每个原始值在其枚举声明中必须是唯一的。当整数用于原始值时,如果没有为某些枚举成员指定值,它们将自动递增。
enumMonth:Int{caseJanuary=1,February,March,April,May,June,July,August,September,October,November,December}letyearMonth=Month.May.rawValue
println("Value of the Month is: (yearMonth).")
当我们使用游乐场运行上述程序时,我们得到以下结果 -
Value of the Month is: 5.