初探Swift七 - 枚举
初探Swift,Swift枚举。Swift枚举不同于C语言的枚举,C的枚举只能关联一个整形,而Swift枚举不但可以关联一个整形,更可以关联任意的数据类型。
声明用enum开头,case 后面跟一个元素。可以不像C语言那样和整数关联。如下,ExamScore不是一个变量,而是一个数据类型,这个数据类型叫做ExamScore,同Int,String一样。
import UIKit
/**
* 枚举(Enumerations)
*/
//声明用enum开头,case 后面跟一个元素。可以不像C语言那样和整数关联。如下,ExamScore不是一个变量,而是一个数据类型,这个数据类型叫做ExamScore,同Int,String一样。
enum ExamScore{
case score_a
case score_b
case score_c
}
var myScore:Int = 40
//声明一个变量是刚才声明的ExamScore类型
var rank:ExamScore
if myScore >= 90 {
//使用枚举:“枚举变量.枚举元素”
rank = ExamScore.score_a
}else if myScore >= 60 {
//使用枚举:枚举变量可以省略,只要“.枚举元素”
rank = .score_b
}else{
rank = .score_c
}
rank
switch rank{
case .score_a:
println("A等成绩")
case .score_b:
println("B等成绩")
case .score_c:
println("C等成绩")
}
/**
* 枚举 - 关联一个值
*/
enum Month:Int{
case Jan=1, Feb, Mar
}
//声明了Jan=1,Feb和Mar系统会自动赋值为2和3
//使用
//此时值为1
Month.Jan.rawValue
//另一种好似用方式
var myMonth:Month
myMonth = .Jan
myMonth.rawValue
//寻找关联值为2的那个枚举元素,返回一个可选型,因为如果寻找1000的那个元素,是找不到。
var nextMonth = Month(rawValue: 2)
nextMonth!.rawValue
//不仅仅,还可以关联字符串
enum MonthString:String{
case Jan="一月"
case Feb="二月"
case Mar="三月"
}
//一月
MonthString.Jan.rawValue
/**
* 复杂的枚举
*/
enum UserInfo{
case birthday(Int, Int, Int)
case name(String)
}
let xiaomingBirthday = UserInfo.birthday(1990, 1, 10)
let xiaomingName:UserInfo = .name("小明")
switch xiaomingBirthday{
case .birthday(let year, let month, let day):
println("\(year)年\(month)月\(day)")
case .name(let name):
println("大家号,我叫\(name)")
}