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
scroll top