我对 Joshua Suareth 的书 Scala 中的“5.1.3 隐式解析”中的描述感到困惑,第 100 页:
Scala 对象不能有隐含的伴随对象。因此,必须从外部范围提供与该对象类型的隐式范围所需的与对象类型关联的隐式。这是一个例子:
scala> object Foo {
| object Bar { override def toString = "Bar" }
| implicit def b : Bar.type = Bar
|}
defined module Foo
scala> implicitly[Foo.Bar.type]
res1: Foo.Bar.type = Bar
但是当我在 REPL 中隐含对象 Bar 时:
scala> object Foo {
| implicit object Bar {
| override def toString = "isBar" }
| }
defined module Foo
scala> implicitly[Foo.Bar.type]
res0: Foo.Bar.type = isBar
似乎不需要在外部范围内定义一个隐式。还是我完全错误地理解了约书亚的意思?