잡담소장소

Swift Programming Language Experiment 본문

Study ;3

Swift Programming Language Experiment

유부뽀 2014. 9. 5. 16:26
  •  Add a method to Card that creates a full deck of cards, with one card of each combination of rank and suit


enum Rank: Int{    
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.toRaw())
        }
    }
}

enum Suit: Int{
    case Spades = 0
    case Hearts, Diamonds, Clubs
    func simpleDescription() -> String{
        switch self{
        case .Spades:
            return "spade"
        case .Hearts:
            return "heart"
        case .Diamonds:
            return "diamond"
        case .Clubs:
            return "club"
        
        }
    }
    func color()->String{
        switch self{
        case .Spades, .Clubs:
            return "black"
        case .Hearts, .Diamonds:
            return "red"
        }
    }
}
struct Card {
    var rank: Rank
    var suit: Suit
   
    func simpleDescription() -> String{
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}

//Card[] 에서 [Card]로 변경
func Deck() -> [Card]{

    let ranksPerSuit = 13
    var deck = [Card]()
    
    for idx in 0...51 
    {
        let suit = Suit.fromRaw( idx / ranksPerSuit ) //Suit 클래스를 수정해서 Suit:Int 로 변경하여 fromRaw를 사용할 수 있도록 하였다
        let rank = Rank.fromRaw( idx % ranksPerSuit + 1 )
        
        let card = Card(rank: rank!, suit: suit!)
        deck.append(card)
    }
    
    return deck
}

func printDeck( [Card] ){
    for card in deck {
        println( card.simpleDescription())
    }
}

let deck = Deck()
printDeck(deck)



Swift 보는 도중에 잘 안되는 코딩이 있어서 찾아봤는데 

제대로 된 해답을 찾지 못해서 이래저래 고쳐본 결과 위와 같은 코드가 나왔다

해답으로 적힌 코드들이 틀렸거나 예전 버전과 달라져서 몇가지 부분들을 수정하게 되었다.



반응형
Comments