当我在repl中创建一个小Map时,它告诉我它的类型是immutable.Map
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如何决定打印什么作为表达式的类型?
解决方法
简短的回答是Scala REPL打印结果的静态类型,如表达式Map(1-> 1,2-> 2)推断的那样,并且getClass返回动态类型,它可以是动态类型的子类型.静态类型.
更长的答案是关于Scala的类型推理引擎如何工作.您可能想阅读Scala Language Reference中的相关章节.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。