Scala案例类中的隐式vs隐式val

时间:2019-06-17 15:42:14

标签: scala implicit

我想了解Scala案例类参数中implicitimplicit val之间的区别,尤其是在涉及继承时。我有以下代码:

abstract class T(implicit x: Int)
case class T1(a: Int)(implicit x: Int) extends T

这个编译就好了。但是,当我创建类型为T1的对象时,我无权访问字段x。经过一番挖掘之后,看来我需要在implicit val x定义中使用T1了:

abstract class T(implicit x: Int)
case class T1(a: Int)(implicit val x: Int) extends T

这使我可以访问t.x类型的t的{​​{1}}。然后,我想知道是否也应该在T1中使用implicit val x。原来,以下代码会产生编译错误:

T

特别是,编译器希望使用abstract class T(implicit val x: Int) case class T1(a: Int)(implicit val x: Int) extends T 关键字。

overrideimplicit有什么不同?为什么它们会影响{​​{1}}是否在字段中可见?他们是否与我是否需要implicit val关键字有什么关系?

0 个答案:

没有答案