为自定义私有类实现 Equatable - Swift

Posted

技术标签:

【中文标题】为自定义私有类实现 Equatable - Swift【英文标题】:Implement Equatable for custom private class - 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

【问题讨论】:

【参考方案1】:

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

private class Foo : Equatable 
    var bar = ""


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

【讨论】:

以上是关于为自定义私有类实现 Equatable - Swift的主要内容,如果未能解决你的问题,请参考以下文章

c++为自定义矩阵类实现迭代器

在 Objective C 中为自定义类实现委托时的引用计数

为自定义 Barrier 设计测试类

CLLocation 如何实现 Equatable 协议?

如何使用 Equatable 创建扩展以删除自定义数组元素?

Equatable 的子类将啥传递给超级(Equatable 类)?