Swift 为什么';这不管用吗?快速教程

Swift 为什么';这不管用吗?快速教程,swift,Swift,在structs上做这个练习时,我很困惑为什么deck不返回一组卡片? 我对C-ish语言相当陌生,但总体上对面向对象语言有经验 struct Card { var rank: Rank var suit: Suit func simpleDescription() -> String { return "The \(rank.simpleDescription()) of \(suit.simpleDescription())" }

在structs上做这个练习时,我很困惑为什么deck不返回一组卡片? 我对C-ish语言相当陌生,但总体上对面向对象语言有经验

struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
        }
    func buildDeck() -> Card[] {
        var range = 0..52
        var deck: Card[] = []
        var suits: Suit[] = [.Hearts, .Spades, .Diamonds, .Clubs]
        for i in range {
            for suit in suits {
                var card = Card(rank: Rank.fromRaw(i)!, suit: suit)
                deck.append(card)
            }
        }
        return deck
    }
}
let threeOfSpades = Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()

var deck = threeOfSpades.buildDeck()
deck

我怀疑的原因之一是您正在使用的半封闭范围语法:

var range = 0..52 
应该是

var range = 0..<52 

var range=0..我不确定这为什么对您不起作用,但我认为您可能希望您的范围为
0..13
(或
1…13
或您在
排名中设置的任何范围)。这将建立一个208张牌的牌组,其中156张在大多数现代纸牌游戏中毫无意义……它抛出了一个例外,对吗?考虑排名的结果,从原始(21)。如果你们中的一个人想发表一个答案,我会投赞成票。范围是问题
1..13
,而不是
0..52
,这是我第一次尝试的方式的残余。谢谢大家!但有趣的是,它没有抛出异常。