enum
可以包含方法。enum Rank: Int {
case Ace = 1
case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King
func simpleDescription() -> String {
switch self {
case .Ace:
return "ace"
case .Jack:
return "jack"
case .Queen:
return "queen"
case .King:
return "king"
default:
return String(self.toRaw())
}
}
}
let ace = Rank.Ace
let aceRawValue = ace.toRaw()
在上面的例子中,enum的型態是Int
,只需要設定第一個值。剩下的值會依序給值。也可以使用字串或浮點數當作值。在上面的switch中,因為self已知是一個Rank,因此case的地方指定Ace可以簡寫為.Ace
使用
toRaw
和fromRaw
在值和enum間轉換。struct
和class有很多相同的地方,像是建構子、方法。最大的區別是struct是call by value,class是call by reference。struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \
(suit.simpleDescription())"
}
}
let threeOfSpades = Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()
沒有留言:
張貼留言