Scala代码a)运行良好:
val f : Function[String, String] = { case "a" => "b"} f.apply("a") //returns "b"
与b)相同)
"a" match { case "a" => "b" } //returns "b"
1) b)中的match子句是a的语法糖吗?
2) 为什么这不起作用。。。?
{ case "a" => "b"}.apply("b") //Does not compile
谢谢
答案:
a)是模式匹配匿名函数(Scala语言规范第8.5节),而b)是模式匹配表达式(Scala语言规范第8.4节)。它们有细微的不同。
这不起作用,因为它需要一个类型作为函数进行解析。可以使其与类型注释一起使用:
({ case "a" => "b"}: PartialFunction[String, String]).apply("b")