官术网_书友最值得收藏!

Nested types

Enumerations are often created to support a specific class or structure's functionality. Likewise, it can be convenient to declare utility classes and structures purely to use within the context of a complex type.

Swift enables us to declare nested types, whereby we nest supporting enumerations, classes, and structures within the definition of the type that they support. The following example, borrowed from The Swift Programming Language by Apple Inc., presents nested types:

struct BlackjackCard { 
// nested Suit enumeration
enum Suit: Character {
case spades = "?",
hearts = "?",
diamonds = "?",
clubs = "?"
}

// nested Rank enumeration
enum Rank: Int {
case two = 2, three, four, five, six, seven, eight, nine, ten
case jack, queen, king, ace

// nested struct
struct Values {
let first: Int, second: Int?
}

var values: Values {
switch self {
case .ace:
return Values(first: 1, second: 11)
case .jack, .queen, .king:
return Values(first: 10, second: nil)
default:
return Values(first: self.rawValue, second: nil)
}
}
}

let rank: Rank, suit: Suit

var description: String {
var output = "suit is \(suit.rawValue),"
output += "value is \(rank.values.first)"
if let second = rank.values.second {
output += " or \(second)"
}
return output
}
}
主站蜘蛛池模板: 叶城县| 剑川县| 兴城市| 景谷| 邵武市| 黄石市| 渑池县| 都匀市| 大同市| 芮城县| 晋宁县| 尼勒克县| 南京市| 敦化市| 邹平县| 武陟县| 会泽县| 安徽省| 句容市| 麟游县| 平原县| 莎车县| 顺昌县| 昆明市| 莱西市| 寿光市| 玉门市| 广元市| 阳信县| 布尔津县| 齐河县| 阿瓦提县| 尤溪县| 德昌县| 桦川县| 安新县| 五华县| 鸡西市| 奉节县| 南靖县| 佛学|