methods - 从 struct 中快速调用方法

标签 methods struct enums swift

我在这里找到了一个看起来像迭代枚举的优雅解决方案: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
    }

}

最佳答案

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

class func - 用于类方法

编辑:

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

static func - 用于静态方法

关于methods - 从 struct 中快速调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046226/

相关文章:

c++ - 枚举声明和定义

c++ - 无法使用在模板化基类 [C++] 中声明的枚举来编译代码

c - 使用另一个 char 数组从 struct 设置一个 char 数组

java - 订购 Java 方法的最常见方式是什么?

c# - 采用构造函数的方法参数

c - 如何让函数体在c中重复

c++ - 声明结构时的 vector 分配

c - struct {0} 和 memset 0 有什么区别

objective-c - 使用typedef枚举时,返回类型枚举EnumName返回枚举成员时会产生编译器错误

c++ - 封装在组合类 C++ 中