为什么他们在Scala中这样做?

时间:2015-09-26 14:24:27

标签: scala

这是我的发现。我发现在Scala我可以简单地写下这样的表达式:

val n: Int = (((2: Int): Int): Int): Int

并且它100%有效。但我不知道为什么Scala创作者会这样做?这个语义有什么意义?这种奇怪有什么原因吗?

PS

我可以假设这种方法用于type inference以帮助编译器弄清楚发生了什么。或者也许还有其他一些案例?

1 个答案:

答案 0 :(得分:6)

答案

  1. 是的,语法有效。
  2. 您正在做的事情被称为“类型归属”,告诉编译器您对表达式的期望类型。 (见What is the purpose of type ascriptions in Scala?
  3. 你在哪里看到任何问题? Int(在您的情况下为2)为Int(并保持为Int)。即使你通过( (previous : ...) : Int )重复多次,它仍然是Int。