我已經張貼在斯卡拉用戶論壇這個問題的仿製藥,落實特質和方法
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