我见过两种在Scala中为类型类模式声明implicit
的方法(一种比另一种少一些)。
implicit val instance1 = new Typeclass { def do = ??? }
implicit object instance2 extends Typeclass { def do = ??? }
它们有什么不同?是否应该根据特定情况偏好其中之一?我发现implicit val
比implicit object
更常用,而且我还没有找到很多关于implicit object
的资源。
implicit
对象还是val
取决于您是更喜欢惰性初始化还是严格初始化? - Kevin Meredithlazy val
来获得带有val
的惰性),但并不是唯一的考虑因素。例如,子类可以重写val
成员,而无法重写object
成员。我相信还有很多其他区别。 - Jason Scott Lenderman