considerar lo siguiente:Scala nombre y los argumentos por defecto en conjunción con los parámetros implícitos
def f(implicit a: String, y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
La última expresión provoca el error siguiente:
not enough arguments for method f: (implicit a: String, implicit y:
Int)java.lang.String. Unspecified value parameter a.
Sin embargo, si se proporciona un valor por defecto a la implícita parámetro a, no hay problema:
def f(implicit a: String = "haha!", y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
Pero la última línea imprime s
haha!: 2
mientras que yo hubiera esperado
size: 2
lo tanto, el valor implícito 's' no es recogido. Si por el contrario no proporciona ningún parámetro a F y acaba de llamar
println(f)
entonces el valor implícito es recogido y se obtiene
size: 0
Puede alguien arrojar alguna luz sobre lo que está pasando aquí?
Debe comprobar qué alcance implícito de que implícitamente está utilizando. No creo que sea lo mismo que la segunda opción. – jsuereth