|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Type problemCorrection: only A is library (it's really lift's Mapper) and B is a base for several A's. C is a trait that operates on an A, which we want to instantiate so that it should operate on various B derivatives.
------------------------------------- Naftoli Gugenhem<naftoligug@...> wrote: trait A[T <: A[T]] trait B[T < B[T]] extends A[T] trait C[T <: A[T]] A and B are library defined. How can I instantiate a C? |
|
|
|
|
|
Re: Type problemtrait A[T <: A[T]]
trait B[T <: A[T]] extends A[T] { def name: String } trait C[T <: B[_]] { def doSomething(p: T) { println(p.name) } def anotherB(b: B[_]) = { b.name } } class AC extends A[AC] class BC extends AC with B[AC] { def name = "Frog" } class BC2 extends AC with B[AC] { def name = "BC2" } class CC extends C[BC] { } val cc = new CC val bc = new BC val bc2 = new BC2 println(cc.anotherB(bc2)) On Sun, Jul 5, 2009 at 9:12 PM, Naftoli Gugenhem <naftoligug@...> wrote: Sorry, I didn't ask the question right. I need an instance of C that can handle any instance of any subclass of B. -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp |
|
|
|
| Free embeddable forum powered by Nabble | Forum Help |