17
我见过两种方式(一个比另一个)声明implicit
为类型类型斯卡拉。斯卡拉隐式对象vs隐式val
implicit val instance1 = new Typeclass { def do = ??? }
implicit object instance2 extends Typeclass { def do = ??? }
它们有什么不同?在某些时候,人们应该选择另一个吗?我发现implicit val
比implicit object
更常用,我还没有找到关于implicit object
的许多资源。
因此,决定使用隐式对象与val来取决于是否更喜欢懒惰或严格的初始化? –
这可能是一个考虑因素(尽管你总是可以用'lazy val'来获得'val'的懒惰),但不是唯一的。例如,'val'成员可以在子类中重写,而'object'成员不能。我相信还有很多其他的区别。 –