1、模式匹配
- 概念介绍
- 类比于 java 中的 switch...case,但比其要强大、灵活很多。
- 旨在解决符合一定模式(值也是模式的一种)情况下的匹配与处理问题。
- 使用说明
- 一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号=>隔开了模式和表达式。
- 选择器 match {备选项},match 表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现有一个匹配的 case,剩下的 case 不会继续匹配。
- 应用示例
- 经典示例(同类型)
def main(args: Array[String]) { println(selfMatch("javase")) } def selfMatch(x: String): String = x match { case "javase" => "Java 开发标准版" case "javaee" => "Java 开发企业版" case _ => "其它 Java 版本 " } |
-
def main(args: Array[String]) {
println(selfMatch("one")) println(selfMatch(2)) println(selfMatch("III")) println(selfMatch("five"))
}
def selfMatch(x: Any): Any = x match {
case
case
case case
"one"
2
=>
"III"
_
=> 1
"two"
=> "希腊数字 3"
=> "其它不认识了"
}
不同类型匹配示例
- 复杂表达式匹配示例
def main(args: Array[String]) { println(selfMatch(1)) println(selfMatch(10)) println(selfMatch(22)) println(selfMatch(78)) } def selfMatch(x: Int): String = x match { case _ if x<12 => "幼年" case _ if x<18 => "未成年" case _ if x>=18 && x<60 => "成年" case _ => "已步入老年了!" } |
- 类型模式匹配示例
object TestPatternMatch { def main(args: Array[String]) { println(selfMatch(1)) println(selfMatch("10")) println(selfMatch(new TestPatternMatch())) println(selfMatch(new Object())) } def selfMatch(x: Any): Any = x match { case _:Int => "传入的是整型" case _:String => "传入的是字符串" case _:TestPatternMatch => "传入的数据类型是TestPatternMatch" case _ => "不知道什么类型" } } //定义一个空类,便于上边的类型模式匹配class TestPatternMatch{ } |
2、正则表达式
- 概念说明
- 与 Java 当中的正则表达式的作用完全相同
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或RE)