Явные несоответствия в одноэлементных типах

У меня есть пара вопросов о типах singleton, но, поскольку они оба очень тесно связаны, я размещаю их в одной теме.

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
6
задан missingfaktor 19 August 2012 в 08:42
поделиться