4
当我创建的REPL一个小地图,它告诉我,它的类型是immutable.MapScala REPL打印的类型是什么?
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会决定打印什么类型的表达式?
其中静态类型是评估的表达式的结果类型,动态类型是实现该类型的实际类? – 2011-04-20 21:03:40
啊,一个古老,快速和肮脏的答案后面跟着编辑技巧,现在让我的问题看起来很愚蠢! – 2011-04-20 21:05:52
最简单的情况下,给定的静态类型与方法定义中的返回类型完全相同。否则(具有推断的类型参数的方法,依赖于隐式参数的返回类型等),您必须检查类型推断引擎的细节,因为事情会变得非常复杂。动态类型由正在执行的方法体内发生的事情给出(这里,相关的方法是'Map.apply()')。 – 2011-04-20 21:06:53