【发布时间】:2011-07-11 11:53:10
【问题描述】:
参考以下代码sn-p:
trait Fruit {
val color:String
def == (fruit:Fruit) = this.color == fruit.color
}
case class Orange(color:String) extends Fruit
case class Apple(color:String) extends Fruit
正如预期的那样,Orange("red") == Orange("red") 是 true。但是,我想强制只能比较相同类型的水果,例如Orange("red") == Apple("red") 应该给出错误。我们能否以优雅的方式在 trait Fruit 的 == 签名中强制执行此操作?
编辑:我希望在编译时捕获错误,而不是在运行时。
【问题讨论】: