/**
1.類型嵌套實例
2.類型嵌套引用
枚舉類型常被用於實現特定類或結構體的功能。也能夠在有多種變量類型的環境中,方便地定義通用類或結構體來使用,爲了實現這種功能,swift允許你定義類型嵌套,可以在枚舉類型、類和結構體中定義支持嵌套類型
要在一個類型中嵌套另一個類型,將需要嵌套的類型的定義寫在被嵌套類型的區域{}內,而且可以根據需要定義多級嵌套
*/
//類型嵌套實例
struct BlackjackCard {
//嵌套定義枚舉型Suit
enum Suit: Character {
case Spades = "♠︎", Hearts = "♡", Diamonds = "♢", Clubs = "♣︎";
}
//嵌套定義枚舉類型Rank
enum Rank: 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 {
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);
}
}
}
//BlackjackCard的屬性和方法
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;
}
}
let theAceOfSpades = BlackjackCard(rank: .Ace, suit: .Spades);
print("theAceOfSpades: \(theAceOfSpades.description)");
//類型嵌套的引用
/**
在外部對嵌套類型的引用,以被嵌套類型的名字爲前綴,加上索要引用的屬性名
*/
let heartsSymbol = BlackjackCard.Suit.Hearts.rawValue;
print(heartsSymbol);