隐含,pimpl模式等

时间:2011-02-23 12:13:45

标签: scala

假设我有这些课程:

case class A()
case class B()
case class C(a: A, b: B)

和这些变量:

val a = A()
val b = B()

有没有办法隐式地获取C的实例而不使ab隐式值?即如果我有一个期望C的方法:

def foo(c: C)

1 个答案:

答案 0 :(得分:6)

{@ 1}}表示法已弃用。您必须使用case class A,否则将case class A()分配给A会导致val a引用后面生成的案例类a的伴随对象现场。

我理解你希望A引用case类的实例,而不是伴随对象。

如果是这样,你可能会问的是什么 - aa不一定是隐含的,但你必须在范围中添加一个新的隐式方法:

b

然后,您必须在方法implicit def obtainC = new C(a, b) 中将implicit修饰符添加到c

foo

完成会话:

def foo(implicit c: C)