Scala nommé arguments par défaut en conjonction avec des paramètres implicites
-
12-11-2019 - |
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