Entendimiento implícito en Scala

Me estaba abriendo camino a través del tutorial de Scala playframework y me encontré con un fragmento de código que me desconcertó:

<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>

Así que decidí investigar y me encontré conesta publicación.

Todavía no lo entiendo.

¿Cuál es la diferencia entre esto?

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

y

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

Aparte del hecho obvio, tienen diferentes nombres de métodos.

Cuando debo usarimplicit ¿y por qué?

Respuestas a la pregunta(4)

Su respuesta a la pregunta