我正在看一段代码,上面写着
case class MyClass(override implicit val x : SomeClass) extends SomeOtherClass(...) {
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下意味着什么override implicit?如果我想生成一个MyClass带有显式参数的实例,我该怎么办?
这意味着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
澄清一下:这里的implicit和override关键字是不相关的。