Swift 为什么';这不管用吗?快速教程
在structs上做这个练习时,我很困惑为什么deck不返回一组卡片? 我对C-ish语言相当陌生,但总体上对面向对象语言有经验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())" }
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
,这是我第一次尝试的方式的残余。谢谢大家!但有趣的是,它没有抛出异常。