Какой тип печатает Scala REPL? - PullRequest
4 голосов
/ 21 апреля 2011

Когда я создаю маленькую Карту в реплее, она говорит мне, что ее тип неизменен. Карта

scala> Map(1->1, 2->2)                                    
res8: scala.collection.immutable.Map[Int,Int] = Map((1,1), (2,2))

Хотя это не вся правда, как в этом случае

scala> Map(1->1, 2->2).getClass
res9: java.lang.Class[_] = class scala.collection.immutable.Map$Map2

Как Scala решает, что печатать как тип выражения?

1 Ответ

7 голосов
/ 21 апреля 2011

Короткий ответ: Scala REPL печатает статический тип ваших результатов, как следует из вашего выражения Map(1->1, 2->2), а getClass возвращает динамический тип, который может быть подтипом статического типа.

Более длинный ответ будет о том, как работает механизм вывода типов в Scala. Возможно, вы захотите прочитать соответствующие разделы в Справочнике по языку Scala .

...