scala - Scala案例类中的隐式与隐式val
问题描述
我想了解 Scala 案例类参数之间的区别implicit
,implicit 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
为. 然后,我想知道我是否也应该使用in 。事实证明,以下代码会产生编译错误:t
T1
implicit val x
T
abstract class T(implicit val x: Int)
case class T1(a: Int)(implicit val x: Int) extends T
具体来说,编译器希望使用override
关键字。
implicit
vs到底有implicit val
什么不同?为什么它们会影响是否x
作为字段可见?它们与我是否需要override
关键字有什么关系?
解决方案
推荐阅读
- syslog-ng - Change log template based on log-event content or source
- functional-programming - How to keep track of a list of nodes in the functional programming paradigm
- javascript - WMTSLayers seems not working in EPSG:25830
- azure - 在 CI/CD 之后找不到 Azure Function API
- laravel-5 - How to get the user name by not primary key field in laravel
- android - 如何使用 android 应用程序通过 WhatsApp 发送数据?
- java - 构建在命令提示符下成功,但在 eclipse 中没有
- java - 使用现有的 JPAQuery 作为子查询
- angular - Spartacus 是否支持本地 Hybris?
- python - 取一个系列的所有元素与python pandas中以前的元素的差异