2

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

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

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

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

这允许我访问类型t.x为. 然后,我想知道我是否也应该使用in 。事实证明,以下代码会产生编译错误:tT1implicit val xT

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

具体来说,编译器希望使用override关键字。

implicitvs到底有implicit val什么不同?为什么它们会影响是否x作为字段可见?它们与我是否需要override关键字有什么关系?

4

0 回答 0