这个Scala代码a)效果很好:
val f : Function[String, String] = { case "a" => "b"}
f.apply("a") //returns "b"
Run Code Online (Sandbox Code Playgroud)
和b)相同
"a" match { case "a" => "b" } //returns "b"
Run Code Online (Sandbox Code Playgroud)
1)b)中的匹配子句是a)的句法糖吗?
2)为什么这不起作用......?
{ case "a" => "b"}.apply("b") //Does not compile
Run Code Online (Sandbox Code Playgroud)
谢谢!
回答:
编号a)是模式匹配的匿名函数(Scala语言规范的第8.5节),而b)是模式匹配的表达式(Scala语言规范的第8.4节).它们略有不同.
这不起作用,因为它需要一个类型作为函数进行解析.您可以使用类型注释:
({ case "a" => "b"}: PartialFunction[String, String]).apply("b")
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |