上性状隐式转换

问题描述:

鉴于我有以下性状上性状隐式转换

trait Foo[T]{ 
    ... 
} 

我有使用这种性状,我希望能够隐式转换的Foo [T]成富[Z](例如case类)。

举例来说,如果我有一个具体的实施

case class Blah[Model] extends Foo[Model] 

我有模型的隐式转换查看...

如何鼓励斯卡拉Blah[Model]转换为Blah[View]

trait Foo[T]{ 
    ... 
    // not sure what to do here! 
    implicit def convertTtoZ .... (implicit converter: T=>Z) ... 
} 

你必须明确地定义了如何建立具有改变参数性状:

scala> import language.implicitConversions 

scala> class M 
defined class M 

scala> class N 
defined class N 

scala> implicit def m2n(m: M): N = new N 
m2n: (m: M)N 

scala> class X[A](val a: A) {} 
defined class X 

scala> implicit def xa2xb[A,B](x: X[A])(implicit ab: A => B) = new X(ab(x.a)) 
xa2xb: [A, B](x: X[A])(implicit ab: A => B)X[B] 

scala> val xm = new X(new M) 
xm: X[M] = [email protected] 

scala> def xnRequired(xn: X[N]) { println("Hi!") } 
xnRequired: (xn: X[N])Unit 

scala> xnRequired(xm) 
Hi!