シングルトン型についていくつか質問がありますが、どちらも非常に密接に関連しているため、同じスレッドに投稿しています。
Q1. #1 はコンパイルしないのに #2 はコンパイルするのはなぜですか?
def id(x: Any): x.type = x // #1
def id(x: AnyRef): x.type = x // #2
Q2. String
私が試した他の参照型の場合は型が正しく推論されますが、そうではありません。どうしてこんなことに?
scala> id("hello")
res3: String = hello
scala> id(BigInt(9))
res4: AnyRef = 9
scala> class Foo
defined class Foo
scala> id(new Foo)
res5: AnyRef = Foo@7c5c5601