Reputation: 167
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())}
That defeats polymorphic behavior...how do I define generic functions that consume BaseTrait?
Upvotes: 0
Views: 199
Reputation: 15086
One valid definition of general
would be
def general[A](e: BaseTrait[A], a: A) = println(e.foo(a))
Upvotes: 1