1. 程式人生 > >Swift學習——A Swift Tour 枚舉和結構體

Swift學習——A Swift Tour 枚舉和結構體

浮點 div 文章 img edr sap -o pad popu

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/zhenyu5211314/article/details/28588095

Enumerations and Structures


Enumerations?? 枚舉的使用

使用 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()
上面的樣例中。定義的原始值枚舉類型是Int型,僅僅須要給第一個定義的枚舉值賦初值。其它的值就會按順序分配,你也能夠使用浮點型和String類型作為枚舉的原始類型

使用 toRaw 和 fromRaw 兩個函數,實現原始值和枚舉值之間進行切換

if let convertedRank = Rank.fromRaw(3) {
    let threeDescription = convertedRank.simpleDescription()
}

事實上依據上面兩個代碼。不難分析,fromRaw 的功能是,在參數中提供枚舉的實際值(如3)。通過實際值轉換成枚舉的原始值

toRaw 的功能是,依據枚舉的原始值(如Ace),轉化成實際值,也就是Ace實際代表的值1

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()
在枚舉中的描寫敘述函數。case 中的內容應該帶上 . ,由於self是存在的,? .Spades 表示的是Sapdes 的枚舉值

枚舉還支持成員上的關聯,同一個枚舉的不同成員能夠關聯不同的值:

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 cheese.")
 
switch success {
case let .Result(sunrise, sunset):
    let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
case let .Error(error):
    let serverResponse = "Failure...  \(error)"
}


Structures? 結構體的使用

使用 struct 創建結構,結構支持構造器和方法這些特性,結構和類的最大差別:結構體的實例是值傳遞,類的實例是引用傳遞

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()

下一節我們說說協議和擴展

Swift學習——A Swift Tour 枚舉和結構體