“覆盖隐式”是什么意思?

Jes*_*ica 5 scala

我正在看一段代码,上面写着

case class MyClass(override implicit val x : SomeClass) extends SomeOtherClass(...) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下意味着什么override implicit?如果我想生成一个MyClass带有显式参数的实例,我该怎么办?

Łuk*_*asz 4

这意味着SomeOtherClass具有一个x类型的字段SomeClass,该字段将被x您在 的构造函数中传递的值覆盖MyClass

implicit将为x我的班级提供论据implicit并允许以下代码:

implicit val someInt = 5
val a = new MyClass
val b = new MyClass()
val c = MyClass() // as it it a case class
Run Code Online (Sandbox Code Playgroud)

如果你想生成一个MyClass带有显式参数的实例,你可以像这样显式地传递它们:

val a = new MyClass()(42)
Run Code Online (Sandbox Code Playgroud)

(为了简单起见,示例假设SomeClass是)Int

澄清一下:这里的implicitoverride关键字是不相关的。