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

为自定义私有类实现Equalable-Swift,swift,equatable,Swift,Equatable,我知道如何为非私有类实现Equatable(通过编写==运算符函数),但是这不适用于私有类,因为“只允许在全局范围内使用运算符”。问题是,在全局范围内,私有类不可见,所以如何实现它的==运算符 private class Foo : Equatable{ var bar = "" } func == (lhs: Foo, rhs: Foo) -> Bool { return lhs.bar == rhs.bar } 错误:使用未声明的类型Foo您还需要将您的=运

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

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

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

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

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

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

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