Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I understand implicit parameters and implicit conversions in Scala but I saw this for the first time today: the implicit keyword in front of a parameter in an anonymous function:

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

What does the implicit keyword do here?

Are there resources on the web that describes more on what the use case is?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
321 views
Welcome To Ask or Share your Answers For Others

1 Answer

There are two distinct features here.

First, request isn't really an argument in a method invocation. It's the argument of an anonymous function. The anonymous function itself is the argument of the method invocation.

Second, declaring an implicit argument in an anonymous function have the convenience of saving you from "forcing" a val into a implicit:

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

I happen to know this a Play framework code, but I am not sure what are the signatures for Action and Ok. I will guess that they are something like that:

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

Again, it's pure guessing for illustrative purposes only.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...