Scala如何处理包含JVM原始值的元组?

时间:2014-09-11 13:23:10

标签: scala jvm

我尝试过这两个变量:

val km = (1,2,4.3,false)

val klpd = (1,2)

在第二种情况下,我看到Tuple2[Int,Int],但第一种情况在内存中显示Tuple4[Integer,Integer,Double,Boolean],即在Intellij / Eclipse中查看变量类型。

因此Scala正在转储基本类型Int并将其存储为Integer。

如果我将Int添加到Array[AnyVal]

,则会出现相同情况

PS:我使用的是Scala 2.10.4,我的REPL输出与Eclipse的输出不匹配。

1 个答案:

答案 0 :(得分:7)

在Scala中,使用采用泛型类型参数的类来表示元组。有22个这样的类,但只有Tuple2被注释为对原始类型进行专门化(优化)。从Tuple3开始的任何内容都将包装原语。