【发布时间】:2016-01-11 06:30:25
【问题描述】:
我有 2 个 Swift 类的层次结构,需要它们来实现 Comparable:
class Thing : Comparable {
var name = "Thing"
init(name : String){
self.name = name
}
}
class Thingy: Thing {
override init(name: String){
super.init(name: "Thingy")
}
}
func ==(lhs: Thing, rhs:Thing)->Bool{
return lhs.name == rhs.name
}
为了符合Comparable,我需要实现这个功能:
func <(lhs: Thing, rhs: Thing) -> Bool{
return lhs.name < rhs.name
}
到目前为止一切都很好,但是如果我需要针对不同子类型的特定
func <(lhs: SubThing, rhs: Thing) -> Bool{
return lhs.name < rhs.name
}
我该怎么做呢?编译器似乎忽略了最后一个声明。
如果类型倒置,它也能工作吗?
lhs: SubThing, rhs: Thing
而不是
lhs: Thing, rhs: SubThing
【问题讨论】: