swift - 为自定义私有(private)类实现 Equatable - Swift

标签 swift equatable

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

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

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

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

最佳答案

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

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

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

关于swift - 为自定义私有(private)类实现 Equatable - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950875/

相关文章:

ios - 无法转换类型 'NSString' 的值?预期参数类型 'String'

swift - Admob 不显示广告

swift3 - swift 3 : How to write Equatable func

swift - 为什么 swift 编译器在有/没有 Equatable 协议(protocol)的情况下对相等运算符的行为不同

泛型函数内部的 Swift Equatable 泛型类型比较

ios - 如何修改 iOS 应用程序的 TableView 项?

ios - 使用 Swift 和 Firebase 检查用户是否存在

ios - 在 Swift 中过滤类数组

swift - 如何在类层次结构中正确实现 Equatable 协议(protocol)?