如何理解这种函数声明:`=> .. => .. => ..`?

时间:2012-03-04 10:18:02

标签: scala

我在某处看到了这个scala函数声明:

def test(f: => String => Result[AnyContent] => Result) = ...

我从未见过这种功能:=> ... => ... => ...,如何理解它?

2 个答案:

答案 0 :(得分:10)

String => Result[AnyContent] => Result去了Function1[String, Function1[Result[AnyContent], Result]]。阅读它是有用的:=> String => (Result[AnyContent] => Result])。也就是说,一个带=> String的函数返回一个函数Result[AnyContent] => Result(也称为curried函数)。

=> AA类型的名称参数。因此=> String => Result[AnyContent] => Result表示test按名称采用String => Result[AnyContent] => Result类型的参数。详细了解按名称参数here

答案 1 :(得分:1)

请记住,函数是普通数据类型。函数可以返回函数。

f: => String => Result[AnyContent] => Result

相同

String => (结果[AnyContent] =>结果)

这只是String将函数从Result[AnyContent]返回到Result的函数。

f: =>是一个名字参数,正如Josh在上面的答案中所解释的那样。