Swift4.2语言规范(二十一) 嵌套类型
通常创建枚举以支持特定类或结构的功能。类似地,定义纯粹在更复杂类型的上下文中使用的实用程序类和结构可能是方便的。为此,Swift允许您定义嵌套类型,从而在它们支持的类型的定义中嵌套支持枚举,类和结构。 要将类型嵌套在另一个类型中,请在其支持的类型的外括号内写入其定义。类型可以嵌套到所需的级别。 Action中的嵌套类型下面的示例定义了一个名为的结构 在二十一点中,Ace牌的价值为一或十一。此功能由一个名为的结构表示,该结构 1 struct BlackjackCard { 2 3 // nested Suit enumeration 4 enum Suit: Character { 5 case spades = "?",hearts = "?",diamonds = "?",clubs = "?" 6 } 7 8 // nested Rank enumeration 9 enum Rank: Int { 10 case two = 2,three,four,five,six,seven,eight,nine,ten 11 case jack,queen,king,ace 12 struct Values { 13 let first: Int,second: Int? 14 } 15 var values: Values { 16 switch self { 17 case .ace: 18 return Values(first: 1,second: 11) 19 case .jack,.queen,.king: 20 return Values(first: 10,second: nil) 21 default: 22 return Values(first: self.rawValue,second: nil) 23 } 24 } 25 } 26 27 // BlackjackCard properties and methods 28 let rank: Rank,suit: Suit 29 var description: String { 30 var output = "suit is (suit.rawValue)," 31 output += " value is (rank.values.first)" 32 if let second = rank.values.second { 33 output += " or (second)" 34 } 35 return output 36 } 37 } 该 该 如上所述,
该 因为 1 let theAceOfSpades = BlackjackCard(rank: .ace,suit: .spades) 2 print("theAceOfSpades: (theAceOfSpades.description)") 3 // Prints "theAceOfSpades: suit is ?,value is 1 or 11" 即使 引用嵌套类型要在其定义上下文之外使用嵌套类型,请在其名称前面加上嵌套在其中的类型的名称: 1 let heartsSymbol = BlackjackCard.Suit.hearts.rawValue 2 // heartsSymbol is "?" 对于上面的示例,这使得的名字 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |