【问题标题】:Implement Equatable for custom private class - Swift为自定义私有类实现 Equatable - Swift
【发布时间】:2015-11-27 05:38:23
【问题描述】:

我知道如何为非私有类实现 Equatable(通过编写 == 运算符函数),但是这对于私有类不起作用,因为“运算符只允许在全局范围内”。问题是,在全局范围内,私有类是不可见的,那么我该如何实现它的 == 运算符..?

private class Foo : Equatable{
    var bar = ""
}

func == (lhs: Foo, rhs: Foo) -> Bool {
        return lhs.bar == rhs.bar
}

错误:使用未声明的类型 Foo

【问题讨论】:

    标签: swift equatable


    【解决方案1】:

    您还需要将您的 == 运算符函数声明为 private 才能正常工作。默认情况下,函数的作用域为 internal,并且您不能拥有具有私有作用域参数或返回类型的内部方法。

    private class Foo : Equatable {
        var bar = ""
    }
    
    private func ==(lhs: Foo, rhs: Foo) -> Bool {
            return lhs.bar == rhs.bar
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2015-02-27
      • 1970-01-01
      • 2023-03-29
      • 2020-03-09
      相关资源
      最近更新 更多