我是新手使用scala激发并且在某些情况下非常混淆符号(x,y)和x._1,y._1。特别是当它们在火花变换中一个接一个地使用时
有人可以解释是否有一个特定的经验法则来确定何时使用这些语法
答案 0 :(得分:2)
基本上有两种方法可以访问匿名函数中的元组参数。它们功能相同,使用您喜欢的任何方法。
_1
,_2
,... 通过模式匹配到具有有意义名称的变量
val tuples = Array((1, 2), (2, 3), (3, 4))
// Attributes
tuples.foreach { t =>
println(s"${t._1} ${t._2}")
}
// Pattern matching
tuples.foreach { t =>
t match {
case (first, second) =>
println(s"$first $second")
}
}
// Pattern matching can also written as
tuples.foreach { case (first, second) =>
println(s"$first $second")
}
答案 1 :(得分:1)
符号(x, y)
是2个元素的{strong>元组,x
和y
。 getScala元组示例和语法有不同的方法可用于元组中的各个值。您可以使用._1
,._2
表示法来获取元素:
val tup = (3, "Hello") // A tuple with two elements
val number = tup._1 // Gets the first element (3) from the tuple
val text = tup._2 // Gets the second element ("Hello") from the tuple
您还可以使用模式匹配。提取这两个值的一种方法是这样的:
val (number, text) = tup
与集合(例如,List
)不同,元组具有固定数量的值(它并不总是两个值),并且值可以具有不同的类型(例如{{ 1}}和上面示例中的Int
。
有许多关于Scala元组的教程,例如:Scala tuple examples and syntax。