Compreensão implícita em Scala

Eu estava fazendo o meu caminho através do tutorial de playframework Scala e me deparei com este trecho de código que me intrigou:

<code>def newTask = Action { implicit request =>
taskForm.bindFromRequest.fold(
        errors => BadRequest(views.html.index(Task.all(), errors)),
        label => {
          Task.create(label)
          Redirect(routes.Application.tasks())
        } 
  )
}
</code>

Então eu decidi investigar e me depareiesta postagem.

Eu ainda não entendi.

Qual é a diferença entre isso:

<code>implicit def double2Int(d : Double) : Int = d.toInt
</code>

e

<code>def double2IntNonImplicit(d : Double) : Int = d.toInt
</code>

além do fato óbvio, eles têm nomes de métodos diferentes.

Quando devo usarimplicit e porque?

questionAnswers(4)

yourAnswerToTheQuestion