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

Fin*_*son -3 scala

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

val n: Int = (((2: Int): Int): Int): Int
Run Code Online (Sandbox Code Playgroud)

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

PS

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

Mar*_*nne 6

回答

  1. 是的,语法有效.
  2. 你正在做什么被称为" 类型归属 ",告诉编译器你期望从表达式中得到什么类型.(请参阅Scala中类型归属的目的是什么?)
  3. 你在哪里看到任何问题?一个Int(2你的情况)是Int(并保持的Int).即使您通过( (previous : ...) : Int )它重复多次仍然保持Int.