我想知道最佳的做法是什么。
val foo = Some("a")
val bar = Some(2)
def baz(a: String, b: Int) = if((b % 2) == 0) Some(a+","+b) else None
(x zip y) flatMap baz //does not compile of course
(x zip y) flatMap { x => baz(x._1, x._2) } //ugly
我会认为Odersky等人在这个例子中有另一个技巧来减少噪音。因此,问题是如何应对这里的混乱,假设您不允许更改
baz
的实现(例如def baz(a: (String Int))
)。