“是什么?”;(x,y)“;在Scala中,实际返回的是什么?

“是什么?”;(x,y)“;在Scala中,实际返回的是什么?,scala,syntax,Scala,Syntax,返回类型为(Int,Int)。这怎么可能?Scala究竟返回了什么?元组?阵列?这是什么类型的 我知道我可以这样调用这个函数: scala> def check(a: Int, b: Int): (Int, Int) = { (3, 4) } 或者这个: scala> val (a, b) = check(1,2) a: Int = 3 b: Int = 4 我仍在学习Scala,但我记不起以前是否见过它,或者这个语法的名称。这是什么 我给出的第一个示例非

返回类型为
(Int,Int)
。这怎么可能?Scala究竟返回了什么?元组?阵列?这是什么类型的

我知道我可以这样调用这个函数:

scala> def check(a: Int, b: Int): (Int, Int) = {
      (3, 4)
      }
或者这个:

scala> val (a, b) = check(1,2)
a: Int = 3
b: Int = 4
我仍在学习Scala,但我记不起以前是否见过它,或者这个语法的名称。这是什么

我给出的第一个示例非常简单,返回
(3,4)
。是否有更现实的方法返回此
(Int,Int)
类型?我必须总是这样放置最终结果(假设x和y值包含这两个输入的最终输出)吗?(x,y)或返回
(x,y)

类型
(Int,Int)
只是编写
Tuple2[Int,Int]
正如@dhg提到的,
(Int,Int)
等于
Tuple2[Int,Int]

在第二个示例中,您在变量定义中使用了模式匹配。您可以将它用于元组、case类以及具有提取器的所有内容。实际上,所有内容都是通过提取器工作的

scala> val x = check(1,2)
x: (Int, Int) = (3,4)

@StefanKunze不复杂,只是罗嗦
scala> val p = Point(1, 2)
p: Point = Point(1,2)

scala> val Point(x, y) = p
x: Int = 1
y: Int = 2

scala> val Property = "(.+)=(.+)".r
Property: scala.util.matching.Regex = (.+)=(.+)

scala> val Property(name, value) = "name1=value1"
name: String = name1
value: String = value1