2014年6月18日

Swift筆記:Enumerations and Structures

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

使用toRawfromRaw在值和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()

沒有留言: