Joshua Suareth の本 Scala in depth の "5.1.3 Implicit resolution" の 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
しかし、オブジェクト Bar を REPL で暗黙的にしますが、次のようになります。
scala> object Foo {
| implicit object Bar {
| override def toString = "isBar" }
| }
defined module Foo
scala> implicitly[Foo.Bar.type]
res0: Foo.Bar.type = isBar
外側のスコープで暗黙的に定義する必要はないようです。それとも、ジョシュアの意味を完全に間違っているのでしょうか?