私は次のScalaコードを持っています:
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)}
しかし、最後の行は冗長すぎるため、これらすべてを試しましたが、どれもコンパイルされません。
data flatMap f
data flatMap f.tupled
data flatMap Function.tupled(f)
data flatMap {f _}
data flatMap (f _).tupled
data flatMap f(_)
私は何を間違っていますか?機能する唯一のものはこれです:
(data map Function.tupled(f)).flatten
map
に続くaflatten
は常に に置き換えることができると思いましたflatMap
が、上記の行はコンパイルされますが、これはそうではありません。
data flatMap Function.tupled(f)