swift類型嵌套

/**

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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章