值类类型的隐式转换?

时间:2010-11-11 23:11:58

标签: scala scala-2.8

我读到了在不同的值类类型之间进行的隐式转换。 “Scala编程”一书指出:

  

[...]类scala.Int的实例会在需要时自动扩展(通过隐式转换)到类scala.Long的实例。

     

(第11.1节 - 斯卡拉的层次结构)

在这种情况下,“必需”是什么意思?怎么能让这个“可见”?我假设:

scala> var i = Int.MaxValue
i: Int = 2147483647

如果我加1,我期待i: Long = 2147483648

scala> i = i + 1
i: Int = -2147483648

我没想到会看到溢出。

1 个答案:

答案 0 :(得分:6)

“必需”表示一个方法,它将一个Long传递给Int和类似的东西。

Int.+不需要Long。在大多数情况下,Ints的行为就像Java的原始整数类型。