枚举与结构
- 枚举:
情况1:
1 enum Rank: Int { 2 case Ace = 1 3 case Two, Three, Four 4 case Queen, King 5 func simpleDescription() -> String { 6 switch self { 7 case .Ace: 8 return "ace" 9 case .Queen: 10 return "queen" 11 case .King: 12 return "king" 13 default: 14 return String(self.rawValue) 15 } 16 } 17 } 18 print(Rank.Ace.simpleDescription())//输出ace:实际值对方法的调用 19 var str = Rank.Ace//实际值的调用 20 //以上分别是两种调用,枚举就这点东西 21 22 //以下为得到值之后的使用 23 print(str)//而这里,却输出Ace(实际值) 24 print(str.rawValue)//这里才输出1(原始值) 25 print(Rank.Two.simpleDescription())//输出默认
情况2:
1 enum Suit { 2 case Spades, Hearts, Diamonds, Clubs 3 func simpleDescription() -> String { 4 switch self { 5 case .Spades: 6 return "spades" 7 case .Hearts: 8 return "hearts" 9 case .Diamonds: 10 return "diamonds" 11 case .Clubs: 12 return "clubs" 13 } 14 } 15 } 16 let heart = Suit.Hearts 17 let heartsDescription = heart.simpleDescription() 18 print(heartsDescription) 19 print(heart)
此外,第二种情况下,对实际值的调用:若变量heart的类型已知,则后面枚举实际值可用缩写,即var heart:Suit = .Hearts。
- 结构:
结构与类极为相似,最大的区别在于结构体是传值,类是传引用。即向“对象”(临时对结构体也这样称呼)赋值时,“对象”存储的是值还是引用。
如果结构体中有方法要修改结构体,比如修改某一个成员变量的值,则需要将该方法声明为mutating,即在方法最前面写上mutating。而类不需要,可直接修改。