寒城攻略:Listo 教你 25 天学会 Swift 语言 - 21 Nested Types
2014-07-16 09:45
411 查看
import Foundation
//***********************************************************************************************
//1.Nested Types(类型嵌套)
//_______________________________________________________________________________________________
//介绍
//枚举类型常被用于实现特定类或者结构体的功能。我们可以在多种变量环境中方便的定义通用的结构体或者类,Swift
支持枚举,类,结构体为支持嵌套类型
//***********************************************************************************************
//2.Nested Types in Action(类型嵌套实例)
enum Rank:
Int{
//嵌套定义枚举类型 Rank,枚举型的 Rank
用来描述扑克牌从 Ace~10,J,Q,K,13
张牌,并分别用一个 Int
类型的值表示牌的面值
case Two = 2,Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King, Ace
struct Values{
let first: Int, second:
Int?
}
var values: Values{
//枚举 Rank
中的方法
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.toRaw(), second:
nil)
}
}
}
let rank: Rank
//结构体 BlackjackCard
的属性和方法
let suit: Suit
var description: String{
var output = "suit is
\(suit.toRaw()),"
output +=
" value is \(rank.values.first)"
if let second =
rank.values.second {
output +=
" or \(second)"
}
return output
}
}
let theAceOfSpades =
BlackjackCard(rank: .Ace, suit: .Spades)
println("the AceOfSpades:
\(theAceOfSpades.description)")
//尽管 Rank
和 Suit 嵌套在 BlackjackCard
中,但仍可被引用,所以在初始化实例时能够通过枚举类型中的成员名称(.Ace
和 .Spades)单独引用
//***********************************************************************************************
//3.Referring to Nested Types(类型嵌套的引用)
//_______________________________________________________________________________________________
//实例代码演示类型嵌套的引用
//在外部对嵌套类型的引用,是以被嵌套类型的名字为前缀,加上所要引用的属性名
let heartsSymbol =
BlackjackCard.Suit.Hearts.toRaw()
println(heartsSymbol)
//***********************************************************************************************
//1.Nested Types(类型嵌套)
//_______________________________________________________________________________________________
//介绍
//枚举类型常被用于实现特定类或者结构体的功能。我们可以在多种变量环境中方便的定义通用的结构体或者类,Swift
支持枚举,类,结构体为支持嵌套类型
//***********************************************************************************************
//2.Nested Types in Action(类型嵌套实例)
enum Rank:
Int{
//嵌套定义枚举类型 Rank,枚举型的 Rank
用来描述扑克牌从 Ace~10,J,Q,K,13
张牌,并分别用一个 Int
类型的值表示牌的面值
case Two = 2,Three, Four, Five, Six, Seven, Eight, Nine, Ten
case Jack, Queen, King, Ace
struct Values{
let first: Int, second:
Int?
}
var values: Values{
//枚举 Rank
中的方法
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.toRaw(), second:
nil)
}
}
}
let rank: Rank
//结构体 BlackjackCard
的属性和方法
let suit: Suit
var description: String{
var output = "suit is
\(suit.toRaw()),"
output +=
" value is \(rank.values.first)"
if let second =
rank.values.second {
output +=
" or \(second)"
}
return output
}
}
let theAceOfSpades =
BlackjackCard(rank: .Ace, suit: .Spades)
println("the AceOfSpades:
\(theAceOfSpades.description)")
//尽管 Rank
和 Suit 嵌套在 BlackjackCard
中,但仍可被引用,所以在初始化实例时能够通过枚举类型中的成员名称(.Ace
和 .Spades)单独引用
//***********************************************************************************************
//3.Referring to Nested Types(类型嵌套的引用)
//_______________________________________________________________________________________________
//实例代码演示类型嵌套的引用
//在外部对嵌套类型的引用,是以被嵌套类型的名字为前缀,加上所要引用的属性名
let heartsSymbol =
BlackjackCard.Suit.Hearts.toRaw()
println(heartsSymbol)
相关文章推荐
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 21 Nested Types
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 12 Properties
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 13 Methods
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 08 Functions
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 14 Subscripts
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 10 Enumerations
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 23 Protocols
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 12 Properties
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 20 Type Casting
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 15 Inheritance
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 19 Optional Chaining
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 24 Generics
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 01 About Swift
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 17 Deinitialization
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 02 Swift Tour
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 18 Automatic Reference Counting
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 03 The Basic
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 16 Initialization
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 05 Strings and Characters
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 13 Methods