Scala利用模式匹配编写一个swap
时间: 2023-09-15 12:19:00 浏览: 40
以下是Scala中使用模式匹配编写的swap函数:
```scala
def swap(pair: (Int, Int)): (Int, Int) = pair match {
case (x, y) => (y, x)
}
```
此函数接受一个元组,然后使用模式匹配将元组中的两个元素交换位置,最后返回一个新的元组。例如,如果调用swap((3, 5)),则返回(5, 3)。
相关问题
Scala利用模式匹配编写一个swap函数,用于交换数组中的前两个元素的位置(数组长度>2)
以下是一个示例实现:
```
def swap(arr: Array[Int]): Array[Int] = arr match {
case Array(a, b, rest @ _*) => Array(b, a) ++ rest
case _ => arr
}
```
在这个实现中,我们使用了模式匹配来处理不同长度的数组。如果数组有至少两个元素,我们将其前两个元素交换位置并返回一个新的数组。否则,我们直接返回该数组。
在第一行中,我们使用了 `@` 符号来捕获除前两个元素以外的所有元素,并将它们赋值给变量 `rest`。然后,我们使用 `++` 符号来将交换后的前两个元素与 `rest` 组合成新的数组。
以下是一些示例输入和输出:
```
swap(Array(1, 2, 3)) // Array(2, 1, 3)
swap(Array(5, 8, 2, 4)) // Array(8, 5, 2, 4)
swap(Array(7)) // Array(7)
```
简述scala中的模式匹配
在 Scala 中,模式匹配是一种强大的功能,它可以用于匹配各种类型的数据结构。模式匹配是一种类似于 switch 语句的结构,但比 switch 更灵活,因为它可以匹配更多的数据类型,而且可以嵌套使用。
在 Scala 中,模式匹配使用 match 关键字。match 表达式可以匹配一个值,然后根据匹配的结果执行不同的操作。匹配的结果可以是常量、变量、类型、构造函数等。
下面是一个简单的例子,展示了如何使用模式匹配来匹配一个整数值:
```scala
val x = 2
x match {
case 1 => println("One")
case 2 => println("Two")
case _ => println("Other")
}
```
在这个例子中,我们定义了一个整数变量 x,然后使用 match 表达式来匹配它的值。如果 x 的值为 1,就会执行第一个 case 分支;如果 x 的值为 2,就会执行第二个 case 分支;如果 x 的值不是 1 或 2,就会执行最后一个 case 分支。
除了常量之外,模式匹配还可以匹配变量、类型、构造函数等。例如,我们可以使用模式匹配来匹配一个列表:
```scala
val lst = List(1, 2, 3)
lst match {
case Nil => println("Empty list")
case head :: tail => println(s"Head: $head, Tail: $tail")
}
```
在这个例子中,我们定义了一个列表 lst,然后使用 match 表达式来匹配它。如果 lst 是一个空列表,就会执行第一个 case 分支;否则,就会执行第二个 case 分支。在第二个 case 分支中,我们使用了模式 head :: tail 来匹配非空列表。head 表示列表的第一个元素,tail 表示列表的剩余部分。