我有以下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)}
但是,最後一行是太冗長,所以我嘗試了所有的這些,沒有他們的編譯。
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
其次flatten
總是可以通過flatMap
所取代,不過雖然上面的行編譯,這並不:
data flatMap Function.tupled(f)
'數據收集unlift(tupled(f))'在這裏更有意義IMO。謝謝! – pathikrit