1

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

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

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

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

4

1 回答 1

3

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

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

private func ==(lhs: Foo, rhs: Foo) -> Bool {
        return lhs.bar == rhs.bar
}
于 2015-11-27T05:43:57.477 回答