swift三-列挙と構造体

2968 ワード

//  enum        ,              ,        
    enum Rank:NSInteger {
    
        case Ace = 1
        case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
        case Jack,Queen,King
        func simpleDescription() -> String {
            switch self {
            case .Ace:
                return "ace"
            case .Jack:
                return "jack"
            case .Queen:
                return "queen"
            case .King:
                return "king"
            default:
                return String(self.rawValue)
            }
        }
    }
    let  ace = Rank.Ace
    let  aceRawValue = ace.rawValue
    
    print(ace,aceRawValue)
    
    //     ,swift   0     1           ,               。       ,Ace      1,               ,                     。  rawValue               。
    //  init?(rawValue)                   
    if let converterRank = Rank(rawValue:3) {
        let threeDescription = converterRank.simpleDescription()
        print(threeDescription)
        
    }
   //          ,              ,   ,             ,          
    enum Suit {
    
        case Spades,Hearts,Diamonds,Clubs
        func simpleDescription() -> String {
            switch self {
            case .Spades:
                return "spades"
            case .Hearts:
                return "hearts"
            case .Diamonds:
                return "diamonds"
            case .Clubs:
                return "clubs"
            }
        }
    }
    let hearts = Suit.Hearts
    let heartsDescription = hearts.simpleDescription()
    print(heartsDescription)
    
    //  :         Hearts  , hearts     ,    Suit.Hearts        ,            。 switch ,        .Hearts   ,  self         suit,                
    //               ,                ,            。           :                   ,                
    //  :                ,                
    enum ServerRespone {
     
        case Result(String,String)
        case Failure(String)
    }
    
    let success = ServerRespone.Result("6:00 am", "8:00 pm")
    let failure = ServerRespone.Failure("out of cheese")
    
    switch success {
    case let .Result(sunrise,sunset):
        let serverResponse = "Sunnrise is at \(sunrise) and sunset is at \(sunset)"
        print("Success... \(serverResponse)")
    case let .Failure(message):
        print("Failure... \(message)")

    }
    
    //  struct         ,             ,        。               ,    
    
    struct Card {
    
        var  rank:Rank
        var suit:Suit
        func simpleDescription() -> String {
            return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
        }
    }
    let ThreeOfSpades = Card(rank: .Three,suit: .Spades)
    let threeSpadesDescription = ThreeOfSpades.simpleDescription()
    print(threeSpadesDescription)