在Swift中重载运算符

Wal*_*GE1 2 operator-overloading swift

我正在尝试在Swift中实现Comparable协议,但编译器不喜欢我尝试重载<运算符.我检查了Apple文档和所有SO帖子,但它们都没有编译.Xcode给了我这个警告:

一行上的连续声明必须用';'分隔

并且它一直建议我在小于符号后插入分号.对我所做错的任何见解都表示赞赏.

class SomeClass: NSObject, Equatable, Comparable{

    var number: UInt32!

    override init()
    {
        super.init()
        self.number = arc4random()
    }

    func == (lhs: SomeClass, rhs: SomeClass) -> Bool
    {
        return true
    }

    func < (lhs: SomeClass, rhs: SomeClass) -> Bool
    {
        return true
    }

}
Run Code Online (Sandbox Code Playgroud)

Seb*_*ler 10

您会看到此错误,因为运算符必须在类定义之外重载,例如move

func == (lhs: SomeClass, rhs: SomeClass) -> Bool
{
    return true
}

func < (lhs: SomeClass, rhs: SomeClass) -> Bool
{
    return true
}
Run Code Online (Sandbox Code Playgroud)

在你的类定义之外,它将起作用(除了它们不会通过此实现返回正确的结果).