这个语法叫什么?Scala文档中对它的解释在哪里?
通过一次喷雾,我遇到了这样的情况:这个语法叫什么?Scala文档中对它的解释在哪里?,scala,higher-order-functions,Scala,Higher Order Functions,通过一次喷雾,我遇到了这样的情况: entity(as[Quiz]) { quiz => requestContext => val responder = createResponder(requestContext) createQuiz(quiz) match { case true => responder ! QuizCreated case _ => responder ! QuizAlready
entity(as[Quiz]) { quiz => requestContext =>
val responder = createResponder(requestContext)
createQuiz(quiz) match {
case true => responder ! QuizCreated
case _ => responder ! QuizAlreadyExists
}
}
这一行是混淆的地方:
entity(as[Quiz]) { quiz => requestContext =>
第二个符号是什么???
这个语法是什么意思?我在哪里可以找到文档以便进一步阅读???如果我像这样插入括号,它是否更有意义
entity(as[Quiz]) { quiz => (requestContext =>
...
)
}
}
这只是一个带有两个参数的curried函数,机械地说,它是一个返回另一个函数的函数。例如:
val test: Int => Int => Int = a => b => a + b // the same as a => (b => a + b)
println(test(2)(3)) //5
您可以将其视为(a,b)=>a+b
,但有了额外的好处,您可以更轻松地部分应用它:
val t: Int => Int = test(2)
println(t(3)) // 5
你能把文档链接起来吗?我已经准备好接受这一正确答案了。我真的不确定是否用这种语法对其进行了准确的解释,但如果您阅读了关于普通(非匿名)curried函数的内容,然后将lambda语法应用于这一原则,这应该是显而易见的:另一种确保这一点的方法是从第一个链接编写一个curried命名函数:
defmodn(n:Int)(m:Int)=((x%n)==0)
在REPL中,然后打印其类型::t modN
。这将导致Int=>(Int=>Boolean)