user7938511
user7938511

Reputation: 167

How to use a typed Scala Trait in generic function?

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

Answers (1)

Jasper-M
Jasper-M

Reputation: 15086

One valid definition of general would be

def general[A](e: BaseTrait[A], a: A) = println(e.foo(a))

Upvotes: 1

Related Questions