//: Playground - noun: a place where people can play
import UIKit
//使用 enum
来创建枚举。如同类和其他命名类型,枚举也可以有方法
enum Rank:
Int {
case Ace =
1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDecription() ->
String {
switch
self {
case .Ace:
return
"ace"
case .Jack:
return
"jack"
case .Queen:
return
"queen"
case .King:
return
"king"
default:
return
String(self.rawValue)
}
}
}
let ace =
Rank.Ace
let aceRawValue =
ace.rawValue
//在如上例子中,原始值的类型是 Int
所以可以只指定第一个原始值。其后的原始值都是按照顺序赋值的。也可以使用
字符串或浮点数作为枚举的原始值。
//if let convertedRank = Rank.Eight {
// let threeDescription = convertedRank.simpleDecription()
//}
//枚举的成员值就是实际值,而不是其他方式写的原始值。实际上,有些情况是原始值,就是你不提供的时候。
enum Suit {
case Spades, Hearts, Diamonds, Clubs
func simpleDescription() ->
String {
switch
self {
case .Spades:
return
"spades"
case .Hearts:
return
"hearts"
case .Diamonds:
return
"diamonds"
case .Clubs:
return
"clubs"
}
}
}
let hearts =
Suit.Hearts
let heartsDescription =
hearts.simpleDescription()
//使用 struct
创建结构体。结构体支持多个与类相同的行为,包括方法和构造器。一大重要的区别是代码之间的传递
总是用拷贝(值传递),而类则是传递引用。
struct Card {
var rank:
Rank
var suit:
Suit
func simpleDescription() ->
String {
return
"The \(rank.simpleDecription())
of \(suit.simpleDescription())"
}
}
let threeOfSpades =
Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription =
threeOfSpades.simpleDescription()
//一个枚举的实例成员可以拥有实例的值。相同枚举成员实例可以有不同的值。你在创建实例时赋值。指定值和原始值的
区别:枚举的原始值与其实例相同,你在定义枚举时提供原始值。
enum ServerResponse {
case Result(String, String)
case Error(String)
}
let success =
ServerResponse.Result("6:00 am",
"8:09 pm")
let failure =
ServerResponse.Error("Out of chinese")
switch
failure {
case
let .Result(sunrise, sunset):
let serverResponse =
"Sunrise is at \(sunrise) and sunset is at
\(sunset)"
case
let .Error(error):
let serverResponse =
"Failure ... \(error)"
}
版权声明:本文为博主原创文章,未经博主允许不得转载。