【问题标题】:Swift Error "static member cannot be used on instance of type"Swift 错误“静态成员不能用于类型的实例”
【发布时间】:2018-05-08 13:50:03
【问题描述】:

我想为我的结构重载运算符,但我收到消息“静态成员 'rating' 不能用于 'GlobalSettings' 类型的实例”。 我已经阅读了这个错误的几个答案,但那里的解决方案根本对我没有帮助。我该如何解决这个问题?

struct GlobalSettings{
    static var rating = false
}

func ==(l: GlobalSettings, r: GlobalSettings) -> Bool {
    if l.rating == r.rating {
        return true
    }else{
        return false
    }
}

【问题讨论】:

  • lr 没有 rating 变量。 GlobalSettings 会。
  • 显而易见的解决方案是删除“静态”。 为什么你认为rating应该是静态属性?
  • 顺便说一句,将函数体简化为return l.rating == r.rating
  • 我使用 GlobalSettings 将所有设置保存在我的应用程序中,以便可以在任何地方访问它们。我相信静态变量对此有好处,但我是 Swift 新手,所以我不确定
  • 那你为什么定义 == 来比较两个“全局设置”,如果没有那种类型的实例?

标签: swift compiler-errors


【解决方案1】:

不能使用 lr 等实例变量访问静态成员。

必须通过类型 (class/struct/enum) 名称访问静态成员,例如:

GlobalSettings.rating

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多