Swift 中的运算符重载
Overloading Operators in Swift
我正在尝试在 Swift 中实现 Comparable 协议,但编译器不喜欢我重载 < 运算符的任何尝试。我检查了 Apple 文档和所有 SO 帖子,但其中 none 甚至可以编译。 Xcode 给我这个警告:
Consecutive declarations on a line must be separated by ';'
它一直建议我在小于号后面插入一个分号。对我做错了什么的任何见解表示赞赏。
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
}
}
您会看到此错误,因为必须在 class 定义之外重载运算符,例如移动
func == (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
func < (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
在您的 class 定义之外,它会起作用(除了它们不会 return 此实现的正确结果)。
我正在尝试在 Swift 中实现 Comparable 协议,但编译器不喜欢我重载 < 运算符的任何尝试。我检查了 Apple 文档和所有 SO 帖子,但其中 none 甚至可以编译。 Xcode 给我这个警告:
Consecutive declarations on a line must be separated by ';'
它一直建议我在小于号后面插入一个分号。对我做错了什么的任何见解表示赞赏。
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
}
}
您会看到此错误,因为必须在 class 定义之外重载运算符,例如移动
func == (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
func < (lhs: SomeClass, rhs: SomeClass) -> Bool
{
return true
}
在您的 class 定义之外,它会起作用(除了它们不会 return 此实现的正确结果)。