Questo codiceCostruire un'espressione lambda utilizzando una sottolineatura
(1 to 30).foreach { x =>
println(x)
println
}
fa ciò che mi aspettavo: la stampa di ogni 1
-30
, intervallati da spazi vuoti. Sono abbastanza chiaro su cosa sta succedendo qui, penso: sto passando una funzione anonima che prima stampa la sua argomentazione, e poi stampa una riga vuota.
Quello che non capisco è il motivo per cui questo non fa lo stesso:
(1 to 30).foreach {
println _
println
}
Sembra equivalente a me. Il carattere di sottolineatura dovrebbe rappresentare il primo e unico argomento della funzione; e la funzione stampa il suo argomento e quindi stampa una riga vuota. Ma quando eseguo questa seconda versione, non ottengo le righe vuote.
Che cosa causa questa differenza?