我已经张贴在斯卡拉用户论坛这个问题的仿制药,落实特质和方法
https://groups.google.com/forum/#!topic/scala-user/xlr7KmlWdWI
和我收到这我很高兴回答。然而,同时我想确定这是否是唯一的结论。由于
我的问题是,比方说,我有,
trait Combinable[A] {
def join[B](l: List[A]): B
}
当我实现这个特征与A作为字符串和B诠释,例如,
class CombineString extends Combinable[String] {
override def join[Int](strings: List[String]) = string.size
}
显然,诠释 ,加入方法旁边,不是Scala整数类,编译该代码将会失败。或者,我可以重写我的特点为
trait Combinable[A, B] {
def join(l: List[A]): B
}
或
trait Combinable[A] {
def join[B](l: List[A])(f: List[A] => B): B
}
我的问题是,我怎么能实现如在第一个例子定义,因为它是特质?如果第一个例子因为定义的方式而没有实际用途,为什么编译器不会投诉?再次感谢。
编译器不会抱怨,因为它不知道A和B通过了什么。开发人员必须保持纪律。 –
我明白,但从人的角度来看(我和其他人的回答)只有一个结果,抛出异常,编译器引发警告是很好的。除非有其他结果我不知道 – thlim
在今天的编译器中没有这样的术语\实体作为“实际使用” – Odomontois