9.1 匹配字面量和常量
在actor间传递消息,通常用的是String
字面量、数字或是元组。如果消息是字面量,只需要键入想匹配的字面量,就完成了。假设我们要根据一周的不同日期确定行动。假定我们以String
表示日期,根据日期确定行动。下面是一个如何对日期进行模式匹配的例子:
PatternMatching/MatchLiterals.scala
def activity(day: String) {
day match {
case "Sunday" => print("Eat, sleep, repeat... ")
case "Saturday" => print("Hangout with friends... ")
case "Monday" => print("...code for fun...")
case "Friday" => print("...read a good book...")
}
}
List("Monday", "Sunday", "Saturday").foreach { activity }
match
是一个对Any
起作用的表达式。在这个例子里,我们用它处理String
。它会对目标执行模式匹配,根据匹配模式的值调用合适的case
表达式。上面代码的输出如下:
...code for fun...Eat, sleep, repeat... Hangout with friends...
字面量和常量可以直接匹配。字面量可以是不同的类型;match
并不关心。不过,match
左边的目标对象的类型也许会对类型有所限制。在上面的例子里,因为它是字符串类型,所以可以匹配的是任意字符串。
case
表达式并不限于在match
语句里使用。这里,包含case
表达式的代码块就是一个简单函数值。