在Scala的REPL上做了一些例子。
在实例化Array对象(尝试测试++运算符)时,我完全忘记输入Array
。
无论如何,现在我想知道这是什么数据类型?
val one = (1,2,3)
或者上面的代码是什么数据结构或容器?这是什么电话?为什么有用?我不相信REPL提供了有关上述代码的有用信息。
感谢您的时间。
答案 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