这是什么数据类型,val one =(1,2,3)

时间:2011-08-02 17:58:51

标签: scala

在Scala的REPL上做了一些例子。

在实例化Array对象(尝试测试++运算符)时,我完全忘记输入Array

无论如何,现在我想知道这是什么数据类型?

val one = (1,2,3) 

或者上面的代码是什么数据结构或容器?这是什么电话?为什么有用?我不相信REPL提供了有关上述代码的有用信息。

感谢您的时间。

3 个答案:

答案 0 :(得分:7)

这是Tuple3的一个实例。元组可以被认为是固定大小的不可变数组,其中每个元素可能具有不同的静态编译时检查类型。

在你的例子中,这恰恰是:

Tuple3[Int, Int, Int]

但你也可以创建各种类型的元组:

val one = (1, false, "a")

在这种情况下:

one._1    // 1, Int type
one._2    // false, Boolean
one._3    // "a", String

元组有各种用例。它们主要用于从函数返回两个值(通常更少)。您可以使用数组或列表,但是所有元素都必须属于同一类型(在最坏的情况下为Any),因此您放松了静态类型检查。此外,不保证这样的序列的大小,而元组具有固定的大小,在编译时已知。

将元组视为轻量级临时对象,但不要滥用它们。例如,不要使用Tuple3来表示日/月/年。

答案 1 :(得分:7)

这是构造Tuple3对象的特殊语法。它相当于

val one = Tuple3[Int, Int, Int](1, 2, 3)

元组最多定义为Tuple22。元组的一个重要用例是从函数返回多个值。元组也可以使用特殊语法解压缩:

scala> val (a, b, c) = one
a: Int = 1
b: Int = 2
c: Int = 3

答案 2 :(得分:1)

它是一个Tuple3 [Int,Int,Int]

val one = (1,2,3) 
val two = Tuple3(1, 2, 3)
two == one // true