这个语法叫什么?它在Scala文档中解释了什么?

Abi*_*oso 4 scala higher-order-functions

通过Spray 教程,我遇到了这个:

entity(as[Quiz]) { quiz => requestContext =>
        val responder = createResponder(requestContext)
        createQuiz(quiz) match {
        case true => responder ! QuizCreated
        case _ => responder ! QuizAlreadyExists
    }
}
Run Code Online (Sandbox Code Playgroud)

这条特定的界限是困惑所在:

entity(as[Quiz]) { quiz => requestContext =>
Run Code Online (Sandbox Code Playgroud)

世界上第二个=>标志是什么?这个语法是什么意思,我在哪里可以找到进一步阅读的文档?

Arc*_*heg 6

如果我把这样的括号括起来,它会更有意义吗?

entity(as[Quiz]) { quiz => (requestContext =>
      ...  
      )
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是一个带有两个参数的curried函数,并且机械地它是一个返回另一个函数的函数.例:

val test: Int => Int => Int = a => b => a + b // the same as a => (b => a + b)
println(test(2)(3))  //5
Run Code Online (Sandbox Code Playgroud)

您可以将其视为(a, b) => a + b,但具有额外的好处,因此您可以更容易地部分应用它:

val t: Int => Int = test(2)
println(t(3)) // 5
Run Code Online (Sandbox Code Playgroud)