在Scala模式匹配中,可以匹配多种变量类型。
基本数据类型
- 数值类型:像 Int 、 Double 等。例如,对一个 Double 类型变量进行匹配:
val num: Double = 3.14
num match {
case i: Int => println("是整数")
case d: Double if d > 3.0 => println("大于3.0的小数")
case _ => println("其他数值")
}
- 字符和布尔类型:
val ch: Char = 'a'
ch match {
case 'a' | 'e' | 'i' | 'o' | 'u' => println("是元音")
case _ => println("不是元音")
}
val boolValue: Boolean = true
boolValue match {
case true => println("是真")
case false => println("是假")
}
复合数据类型
- 数组(Array):
val array = Array(1, 2, 3)
array match {
case Array(1, _, _) => println("数组第一个元素是1")
case Array(_, 2, _) => println("数组第二个元素是2")
case _ => println("其他数组")
}
- 列表(List)和序列(Seq):
val list = List(4, 5, 6)
list match {
case 1 :: Nil => println("只有元素1的列表")
case x :: y :: Nil => println(s"有两个元素的列表,第一个是$x,第二个是$y")
case _ => println("其他列表情况")
}
- 元组(Tuple):
val tuple = (1, "twotwo")
tuple match {
case (1, s) => println(s"第一个元素是1,第二个是字符串$s")
case _ => println("其他元组情况")
}
自定义类型
- 假设定义了一个简单的 Person 类:
class Person(val name: String, val age: Int)
val person = new Person("Alice", 25)
person match {
case p if p.age > 20 => println(s"${p.name}年龄大于20")
case _ => println("其他人员情况")
}