枚举与结构

  • 枚举:

情况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())//输出默认
View Code

情况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)
View Code

此外,第二种情况下,对实际值的调用:若变量heart的类型已知,则后面枚举实际值可用缩写,即var heart:Suit = .Hearts。


  • 结构:

结构与类极为相似,最大的区别在于结构体是传值,类是传引用。即向“对象”(临时对结构体也这样称呼)赋值时,“对象”存储的是值还是引用。

如果结构体中有方法要修改结构体,比如修改某一个成员变量的值,则需要将该方法声明为mutating,即在方法最前面写上mutating。而类不需要,可直接修改。

原文地址:https://www.cnblogs.com/quanxi/p/5907407.html