Swift nested types

/*

   Nested types

   one type nexted in other type

 */


struct BlackJackCard{

    enum Suit: String{

        case spades = "heitao",

        hearts="hongtao",diamonds="fangkuai",clubs="caohua"

    }

    enum Rank:Int{

        case two=2,three,four,five,six,seven,eight,nine,ten

        case jack,queen,king,ace

        struct Value{

            let first:Int,second:Int?

        }

        var values:Value{

            switch self {

            case .ace:

                returnValue(first:1,second:11)

            case .jack,.queen,.king:

                returnValue(first:10,second:nil)

            default:

                returnValue(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

    }

}


let theAceOfSpades = BlackJackCard(rank:.ace,suit:.spades)


print("theAceOfSpades:\(theAceOfSpades.description)")


enum Test:Int{

    case a=2,b,c,d,e

    case f,g,h

}


let heartsSymbol = BlackJackCard.Suit.hearts.rawValue


var test=Test.f.rawValue


你可能感兴趣的:(swift_杂碎)