Ho il seguente codice Scala:Scala Function.tupled vs f.tupled
def f(x: Int, y: Int): Option[String] = x*y match {
case 0 => None
case n => Some(n.toString)
}
val data = List((0, 1), (1, 0), (2, 3), (4, -1))
data flatMap {case (x, y) => f(x, y)}
Ma, l'ultima riga è troppo prolisso così ho provato tutti questi e nessuno di loro compila.
data flatMap f
data flatMap f.tupled
data flatMap Function.tupled(f)
data flatMap {f _}
data flatMap (f _).tupled
data flatMap f(_)
Cosa sto sbagliando? L'unica cosa che funziona è questo:
(data map Function.tupled(f)).flatten
ho pensato un map
seguito da flatten
può sempre essere sostituito da flatMap
, ma anche se la linea di cui sopra compila, questo non lo fa:
data flatMap Function.tupled(f)
'dati raccolti unlift (tupla (f))' ha più senso qui IMO. Grazie! – pathikrit