Scala - 函数应用vs匹配子句

时间:2018-04-15 04:43:47

标签: scala

此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)中的匹配子句是a)的语法糖吗?

2)为什么这不起作用??

{ case "a" => "b"}.apply("b") //Does not compile

谢谢!

1 个答案:

答案 0 :(得分:6)

数目:

  1. 没有。 a)是模式匹配的匿名函数(Scala语言规范的第8.5节),而b)是模式匹配的表达式(Scala语言规范的第8.4节)。它们略有不同。

  2. 这不起作用,因为它需要一个类型作为函数进行解析。您可以使用类型注释:

    import numpy as np