Scala 匿名函数参数前的隐式关键字

2023-12-22

我了解 Scala 中的隐式参数和隐式转换,但今天第一次看到这一点:匿名函数中参数前面的隐式关键字:

Action { implicit request =>
  Ok("Got request [" + request + "]")
}

隐式关键字在这里起什么作用?

网络上是否有资源可以详细描述用例?


这里有两个明显的特征。

First, request实际上并不是方法调用中的参数。这是匿名函数的参数。匿名函数本身是方法调用的参数。

其次,在匿名函数中声明隐式参数可以方便地使您免于“强制”将 val 转换为隐式参数:

Action { request =>
  implicit val r = request
  Ok("Got request [" + request + "]")
}

我碰巧知道这是一个 Play 框架代码,但我不确定 Action 和 Ok 的签名是什么。我猜他们是这样的:

def Action(r:Request => Result):Unit
case class Ok(str:msg)(implicit r:Request)

再次强调,这纯粹是出于说明目的的猜测。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 匿名函数参数前的隐式关键字 的相关文章

随机推荐