模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式。箭头符号=>隔开了模式和表达式。match对应了Java里的switch,但是写在选择器表达式之后。Scala的模式匹配除了可以对之进行匹配之外,还可以对类型进行匹配、对Array和List的元素情况进行匹配、对case class进行匹配、甚至对有值或没值进行匹配。
match表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现一个匹配的case,剩下的case不会继续匹配。
def match1(x:Int):String = x match{
case 1=>"one"
case 2=>"two"
case 3=>"thr
case _="other"
}
printin(match1)
利用if语句和模式匹配来判断今年过去了多少天,代码如下:
package Week3
object days {
def main(args: Array[String]): Unit = {
def matchDays(x:Int,y:Int):Int= x match {
case 1 => return y
case 2 => return 31 + y
case 3 => return 59 + y
case 4 => return 89 + y
case 5 => return 120 + y
case 6 => return 150 + y
case 7 => return 181 + y
case 8 => return 212 + y
case 9 => return 242 + y
case 10 => return 273 + y
case 11 => return 303 + y
case 12 => return 334 + y
}
print("请输入月份:")
val m = readInt()
print("请输入日期:")
val d = readInt()
if (d > 0&&d < 32)
printf("2022年已经过了%d天",matchDays(m,d))
else
printf("请输入正确日期!")
}
}