Scala中的"(x,y)"是什么,实际返回的是什么?

win*_*ler 2 syntax scala

scala> def check(a: Int, b: Int): (Int, Int) = {
      (3, 4)
      }
Run Code Online (Sandbox Code Playgroud)

返回类型是(Int, Int).这怎么可能?什么是Scala实际返回?一个元组?数组?这是什么类型的?

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

scala> val (a, b) = check(1,2)
a: Int = 3
b: Int = 4
Run Code Online (Sandbox Code Playgroud)

或这个:

scala> val x = check(1,2)
x: (Int, Int) = (3,4)
Run Code Online (Sandbox Code Playgroud)

我还在学习Scala,但我不记得我之前是否见过这个,或者这个语法的名字.它是什么?

我给出的第一个例子很简单,回归(3, 4).是否有更现实的方式返回此(Int, Int)类型?我必须总是把最终结果(让我们假设x和y值包含这两个输入的最终输出)像这样(x, y)或返回(x, y)

Ser*_*nko 8

正如@dhg所提到的,(Int, Int)等于Tuple2[Int, Int]

在第二个示例中,您在变量定义中使用模式匹配.您可以将它与元组,案例类以及具有提取器的所有内容一起使用.实际上,一切都通过提取器工作.

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
Run Code Online (Sandbox Code Playgroud)


dhg*_*dhg 6

这种类型(Int, Int)只是一种更好的写作方式Tuple2[Int,Int]