我在某处看到了这个scala函数声明:
def test(f: => String => Result[AnyContent] => Result) = ...
我从未见过这种功能:=> ... => ... => ...
,如何理解它?
答案 0 :(得分:10)
String => Result[AnyContent] => Result
去了Function1[String, Function1[Result[AnyContent], Result]]
。阅读它是有用的:=> String => (Result[AnyContent] => Result])
。也就是说,一个带=> String
的函数返回一个函数Result[AnyContent] => Result
(也称为curried函数)。
=> A
是A
类型的名称参数。因此=> 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在上面的答案中所解释的那样。