如何在泛型函数中使用类型化Scala特征? scala>trait-BaseTrait[T]{def-foo(e:T):String} 定义性状基本性状 scala>class C1扩展了BaseTrait[String]{def foo(e:String)=“C1”} 定义类别C1 scala>class C2扩展了BaseTrait[Int]{def foo(e:Int)=e.toString} 定义的C2类 scala>def-general(e:BaseTrait)={println(e.foo())} :43:错误:trait BaseTrait接受类型参数 `在此处输入代码`def-general(e:BaseTrait)={println(e.foo())}

如何在泛型函数中使用类型化Scala特征? scala>trait-BaseTrait[T]{def-foo(e:T):String} 定义性状基本性状 scala>class C1扩展了BaseTrait[String]{def foo(e:String)=“C1”} 定义类别C1 scala>class C2扩展了BaseTrait[Int]{def foo(e:Int)=e.toString} 定义的C2类 scala>def-general(e:BaseTrait)={println(e.foo())} :43:错误:trait BaseTrait接受类型参数 `在此处输入代码`def-general(e:BaseTrait)={println(e.foo())},scala,generics,types,Scala,Generics,Types,这会破坏多态行为……我如何定义使用BaseTracit的泛型函数?一个有效的general定义是 scala> trait BaseTrait[T] { def foo(e: T): String} defined trait BaseTrait scala> class C1 extends BaseTrait[String] {def foo(e: String) = "C1"} defined class C1 scala> class C2 extends Base

这会破坏多态行为……我如何定义使用BaseTracit的泛型函数?

一个有效的
general
定义是

scala> trait BaseTrait[T] { def foo(e: T): String}
defined trait BaseTrait

scala> class C1 extends BaseTrait[String] {def foo(e: String) = "C1"}
defined class C1

scala> class C2 extends BaseTrait[Int] {def foo(e: Int) = e.toString}
defined class C2

scala> def general(e :BaseTrait) = {println(e.foo())}
<console>:43: error: trait BaseTrait takes type parameters
`enter code here`def general(e :BaseTrait) = {println(e.foo())}

def-general(e:BaseTrait[)]
但这仍然不起作用
e.foo
获取参数。检查参数多态性,似乎您需要特殊多态性。@user7938511您没有指定在没有参数化的情况下从何处获取传递给
foo
的有效参数。
def general[A](e: BaseTrait[A], a: A) = println(e.foo(a))