[英]How to instantiate generic function from a trait in Scala?
當我嘗試定義擴展Trait的類時,Scala中出現一個奇怪的類型不匹配錯誤。 我定義以下特征
trait T {
def f[A,B](x: A): B
}
然后定義以下實現此特征的類
class A() extends T {
def f[Unit,Int](x: Unit) = {
10
}
}
其背后的想法是,我想保證任何具有T特征的類都具有一個稱為“ f”的函數,而不論該函數的形狀如何(即,不管其類型如何)。
當我嘗試執行上述代碼時出現問題,並且出現以下錯誤
定義的特征T:14:錯誤:類型不匹配; 找到:scala.Int(10)必需:Int
所以我不知道應該如何指定類型才能使這項工作。 我試圖實例化為
def f[Unit,scala.Int(10)](x: Unit) = {
10
}
但是隨后,編譯器抱怨類型名稱不能帶有“。”。 。 我想念什么?
你可以做這樣的事情
trait T[A,B] {
def f(x: A): B
}
class Impl1 extends T[Int, Unit] {
override def f(x: Int): Unit = println(x)
}
class Impl2 extends T[Unit, Int] {
override def f(x: Unit): Int = 10
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.