Dun*_*gor 4 scala read-eval-print-loop
当我在repl中创建一个小Map时,它告诉我它的类型是immutable.Map
scala> Map(1->1, 2->2)
res8: scala.collection.immutable.Map[Int,Int] = Map((1,1), (2,2))
Run Code Online (Sandbox Code Playgroud)
然而,这不是全部真相,就像在这种情况下一样
scala> Map(1->1, 2->2).getClass
res9: java.lang.Class[_] = class scala.collection.immutable.Map$Map2
Run Code Online (Sandbox Code Playgroud)
Scala如何决定打印什么作为表达式的类型?
简短的回答是Scala REPL打印结果的静态类型,如表达式推断的那样Map(1->1, 2->2),getClass返回动态类型,它可以是静态类型的子类型.
更长的答案是关于Scala的类型推理引擎如何工作.您可能希望阅读Scala语言参考中的相关部分.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |