Question

Considérer ce qui suit:

def f(implicit a: String, y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))

La dernière expression provoque l'erreur suivante:

not enough arguments for method f: (implicit a: String, implicit y:
Int)java.lang.String. Unspecified value parameter a.

Cependant, si vous fournissez une valeur par défaut au paramètre implicite A, il n'y a aucun problème:

def f(implicit a: String = "haha!", y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))

Mais la dernière ligne imprime

haha!: 2

alors que je m'attendais

size: 2

Ainsi, la valeur implicite «» n'est pas ramassée. Si vous ne fournissez pas de paramètres à F et appelez simplement

println(f)

Ensuite, la valeur implicite est ramassée et vous obtenez

size: 0

Quelqu'un peut-il faire la lumière sur ce qui se passe ici?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top