Scala denominata e argomenti predefiniti in combinazione con parametri impliciti
-
12-11-2019 - |
Domanda
Considera quanto segue:
def f(implicit a: String, y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
L'ultima espressione provoca il seguente errore:
not enough arguments for method f: (implicit a: String, implicit y:
Int)java.lang.String. Unspecified value parameter a.
Tuttavia, se si fornisce un valore predefinito al parametro implicito A, non vi è alcun problema:
def f(implicit a: String = "haha!", y: Int = 0) = a + ": " + y
implicit val s = "size"
println(f(y = 2))
Ma l'ultima riga stampe
haha!: 2
Mentre mi sarei aspettato
size: 2
Quindi il valore implicito "non viene raccolto. Se invece non fornisci parametri a F e chiama semplicemente
println(f)
Quindi il valore implicito viene raccolto e ottieni
size: 0
Qualcuno può far luce su quello che sta succedendo qui?
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow