我在这里找到了迭代枚举的优雅解决方案:How to enumerate an enum with String type?
接下来,我无法弄清楚如何调用此方法。在面值,它看起来不像是一个参数,但当我尝试调用Card.createDeck()时,我得到一个编译错误告诉我“错误:在调用中缺少参数#1的参数”。
请让我知道我在这里做错了什么?我该怎样传递给这种方法?
struct Card {
var rank: Rank
var suit: Suit
func simpleDescription() -> String {
return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
}
func createDeck() -> [Card] {
var deck = [Card]()
var n = 1
while let rank = Rank.fromRaw(n) {
var m = 1
while let suit = Suit.fromRaw(m) {
deck += Card(rank: rank, suit: suit)
m++
}
n++
}
return deck
}
}
答案 0 :(得分:6)
createDeck()
是一个实例方法。执行Card.createDeck()
是对不存在的类方法的调用。
class func
- 用于课程方法
编辑:
我误读了它是一个结构,但同样的逻辑适用。
static func
- 用于静态方法
答案 1 :(得分:1)
你无法直接调用它,因为它不需要struct
,因为它不是类函数。所以使用
Card(rank:Rank.yourRank,suit:Suit.yourSuit).createDeck()
实际上要使struct
需要rank
和suit
实例,所以首先制作它们,然后传递给Card
构造函数。默认struct
有参数为他们的财产。