假设我有这些课程:
case class A()
case class B()
case class C(a: A, b: B)
和这些变量:
val a = A()
val b = B()
有没有办法隐式地获取C
的实例而不使a
和b
隐式值?即如果我有一个期望C
的方法:
def foo(c: C)
答案 0 :(得分:6)
{@ 1}}表示法已弃用。您必须使用case class A
,否则将case class A()
分配给A
会导致val a
引用后面生成的案例类a
的伴随对象现场。
我理解你希望A
引用case类的实例,而不是伴随对象。
如果是这样,你可能会问的是什么 - a
和a
不一定是隐含的,但你必须在范围中添加一个新的隐式方法:
b
然后,您必须在方法implicit def obtainC = new C(a, b)
中将implicit
修饰符添加到c
:
foo
完成会话:
def foo(implicit c: C)