scala math 匹配模式

scala math 匹配模式

在Scala语言中,模式匹配是一种强大的控制结构,
它允许你以声明式的方式检查一个值是否符合某个模式,
并根据匹配的结果执行不同的代码块。
Scala的模式匹配类似于正则表达式,但更加通用,可以用于数据结构的匹配。

以下是Scala模式匹配的一些基本用法:

1. match 表达式

Scala中的match表达式类似于其他语言中的switchswitch-case语句,但它更灵活,可以匹配更复杂的数据结构。

val dayOfWeek: Int = 2
dayOfWeek match {
	case 1 => System.out.println("星期一")
	case 2 => System.out.println("星期二")
	case 3 => System.out.println("星期三")
	case 4 => System.out.println("星期四")
	case 5 => System.out.println("星期五")
	case 6 => System.out.println("星期六")
	case _ => System.out.println("星期日")
}

2. 匹配元组

val point = (3, 4)
point match {
  case (x, y) => println(s"Point is at ($x, $y)")
}

3. 匹配列表

val list = List(1, 2, 3)
list match {
  case head :: tail => println(s"Head is $head, Tail is $tail")
  case Nil => println("List is empty")
}

4. 匹配选项

val maybeNumber: Option[Int] = Some(10)
maybeNumber match {
  case Some(x) => println(s"Got a number: $x")
  case None => println("No number")
}

5. 匹配类实例

class Person(val name: String, val age: Int)

val person = new Person("Alice", 30)
person match {
  case Person("Alice", age) => println(s"Alice is $age years old")
  case Person(name, age) => println(s"$name is $age years old")
}

6. 守卫条件

val number = 10
number match {
  case x if x > 0 => println("Positive number")
  case x if x < 0 => println("Negative number")
  case _ => println("Zero")
}

7. 析构(Deconstruction)

val personTuple = ("Bob", 23)
val (name, age) = personTuple
println(s"$name is $age years old")

8. 模式匹配与集合

val map = Map("key1" -> "value1", "key2" -> "value2")
map.get("key1") match {
  case Some(value) => println(s"Value for key1 is $value")
  case None => println("Key not found")
}

Scala的模式匹配是类型安全的,并且可以与Scala的类型系统紧密集成,提供强大的数据处理能力。

通过模式匹配,你可以以一种简洁和表达性强的方式处理复杂的数据结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李昊哲小课

桃李不言下自成蹊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值