Swift學習——A Swift Tour 枚舉和結構體
阿新 • • 發佈:2019-04-13
浮點 div 文章 img edr sap -o pad popu
版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/zhenyu5211314/article/details/28588095
事實上依據上面兩個代碼。不難分析,fromRaw 的功能是,在參數中提供枚舉的實際值(如3)。通過實際值轉換成枚舉的原始值
下一節我們說說協議和擴展
Enumerations and Structures
Enumerations?? 枚舉的使用
使用 enum 定義一個枚舉,枚舉裏面能夠關聯方法,比方下文中的描寫敘述方法
上面的樣例中。定義的原始值枚舉類型是Int型,僅僅須要給第一個定義的枚舉值賦初值。其它的值就會按順序分配,你也能夠使用浮點型和String類型作為枚舉的原始類型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()
使用 toRaw 和 fromRaw 兩個函數,實現原始值和枚舉值之間進行切換
if let convertedRank = Rank.fromRaw(3) {
let threeDescription = convertedRank.simpleDescription()
}
事實上依據上面兩個代碼。不難分析,fromRaw 的功能是,在參數中提供枚舉的實際值(如3)。通過實際值轉換成枚舉的原始值
toRaw 的功能是,依據枚舉的原始值(如Ace),轉化成實際值,也就是Ace實際代表的值1
在枚舉中的描寫敘述函數。case 中的內容應該帶上 . ,由於self是存在的,? .Spades 表示的是Sapdes 的枚舉值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()
枚舉還支持成員上的關聯,同一個枚舉的不同成員能夠關聯不同的值:
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 枚舉和結構體