Methods 在swift中从结构调用方法

Methods 在swift中从结构调用方法,methods,struct,enums,swift,Methods,Struct,Enums,Swift,我在这里找到了迭代枚举的优雅解决方案: 接下来,我很难弄清楚如何调用这个方法。从表面上看,它看起来不需要参数,但当我尝试调用Card.createDeck()时,我得到一个编译器错误,告诉我“错误:调用中缺少参数#1的参数” 请让我知道我做错了什么?这种方法我应该传递什么 struct Card { var rank: Rank var suit: Suit func simpleDescription() -> String { return "

我在这里找到了迭代枚举的优雅解决方案:

接下来,我很难弄清楚如何调用这个方法。从表面上看,它看起来不需要参数,但当我尝试调用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
    }

}
createDeck()
是一个实例方法。执行
Card.createDeck()
是对不存在的类方法的调用

class func
-用于类方法

编辑:

我误读了它是一个结构,但同样的逻辑适用


静态函数
-对于静态方法

您不能直接调用它,因为它不是类函数,所以需要安装
结构

Card(rank:Rank.yourRank,suit:Suit.yourSuit).createDeck()

实际上,要制作
struct
你需要
rank
suit
实例,所以首先制作它们,然后传递给
Card
构造函数。默认情况下
struct
有参数作为它们的属性。

我刚刚通过一些其他的调查发现,我需要在
func
之前使用
static
。这似乎与您的轻推一致,@literpor:-)哦,是的,我没有看到它是一个结构,否则您将使用静态。谢谢@literpor;接下来,如何打开这些向我飞来的枚举?:-)@如果让myEnum=myRank,是否可以选择链接
?{}否则{}
或不安全地强制展开
让myEnum=myRank如下所述,我发现因为这不是一个实例方法,所以我需要使用
static func
。然而,当我现在通过
Card.createDeck()
调用它时,我只看到了所有的枚举。我该怎么打开那些?