匹配字面量和常量
在actor间传递消息,通常用的是string字面量、数字或是元组。如果消息是字面量,只需要输入想匹配的字面量即可。
def activity(day : String) = {
day match {
case "monday" => print("work hard")
case "sunday" => print("eating sleeping ")
case "friday" => print("read a good book")
case "saturday" => print("met with friends")
}
}
List("monday", "sunday", "friday", "saturday").foreach {activity}
match是一个队Any起作用的表达式。它会对目标执行模式匹配,根据匹配模式的值调用合适的case表达式。字面量和常量可以直接匹配。字面量可以是不同的类型。match并不关心。
匹配通配符
如果有一个值,与case表达式里的任何一个都不匹配,会得到一个MatchError异常。通配符可以避免抛出异常。
private object WeekDay extends Enumeration {
val monday = Value("monday")
val sunday = Value("sunday")
val tuesday = Value("tuesday")
}
def activity(day : WeekDay.Value) = {
day match {
case WeekDay.monday => println()
case WeekDay.sunday => println()
case WeekDay.tuesday => println()
case _ => println("error")//通配符_,匹配剩下的日期
}
}
匹配元素和列表
元组和列表也可以用case表达式匹配。
def activity (input:Any) = {
input match {
case (a, b)/*匹配元组*/ => println()
case "done"/*匹配字面量*/ =>