gpt4 book ai didi

scala - play/scala ,隐式请求 => 是什么意思?

转载 作者:行者123 更新时间:2023-12-04 17:44:33 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Implicit parameter for literal function

(1 个回答)


5年前关闭。




大部分play框架我看到的代码块

// Returns a tasks or an 'ItemNotFound' error
def info(id: Long) = SecuredApiAction { implicit request =>
maybeItem(Task.findById(id))
}

是的,我的理解是定义一个方法 info(id: Long)在 scala doc 中创建函数的语法如下所示:
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}

你能告诉我 implicit request =>是什么意思吗?和 SecuredApiAction放在 { 之前

最佳答案

play.api.mvc.Action具有处理请求和返回结果的辅助方法。 One if it's apply overloads accepts a play.api.mvc.Request parameter :

def apply(request: Request[A]): Future[Result]

通过将请求参数标记为 implicit ,您允许其他隐含需要参数使用它的方法。 Play Framework documentation 中也有说明:

It is often useful to mark the request parameter as implicit so it can be implicitly used by other APIs that need it.



如果您自己创建一个方法并标记一个方法,如果它是隐式参数,那将是相同的:
object X {
def m(): Unit = {
implicit val myInt = 42
y()
}

def y()(implicit i: Int): Unit = {
println(i)
}
}

因为有一个 implicit在范围内,调用 y()myInt变量将隐式传递给方法。
scala> :pa
// Entering paste mode (ctrl-D to finish)

object X {
def m(): Unit = {
implicit val myInt = 42
y()
}

def y()(implicit i: Int): Unit = {
println(i)
}
}

// Exiting paste mode, now interpreting.

defined object X

scala> X.m()
42

关于scala - play/scala ,隐式请求 => 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40232732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com