Estoy tratando de definir una clase con algunos métodos de tomar un parámetro implícito:Cómo proporcionar un valor por defecto para los parámetros implícitos a nivel de clase
object Greetings {
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
utilizo esta clase de otra clase
implicit val greetings = "hello" //> greetings : java.lang.String = hello
Greetings.say("loic") //> res0: String = hello loic
Greetings.say("loic")("hi") //> res1: String = hi loic
Mi problema es que solo funciona si defino el valor implícito fuera de mi objeto Saludos. Me gustaría poder proporcionar métodos con parámetros implícitos, con un valor predeterminado dentro de mi clase, para facilitar el uso de mi API (como la API de la colección Scala).
Así que me gustaría hacer esto, pero no está funcionando (valor implícito no encontrado):
object Greetings {
implicit val greetings = "hello"
def say(name: String)(implicit greetings: String): String = greetings + " " +name
}
y luego
Greetings.say("loic")
Greetings.say("loic")("hi")
Sé que puedo definir un valor predeterminado con (implicit greetings: String = "hello")
pero Me gustaría hacerlo a nivel de clase, para evitar repetir si hay muchos métodos.
Supongo que me falta algo porque vi que CanBuildFrom
se define dentro de la clase List
, por ejemplo.
No es extraño, ya implícita sólo se inserta en segundo lugar a los parámetros normales. Normalmente su clase se vería como 'clase Greetings() (val implícito ...)' – thatsIch