使用元组作为参数列表调用方法

Joa*_*ert 10 syntax scala tuples

我想知道最好的方法是什么.

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
Run Code Online (Sandbox Code Playgroud)

我认为Odersky等人.在这个例子中,他们还有另一个技巧来降低噪音.

所以问题是如何在这里打击杂乱,假设你不允许改变baz(例如def baz(a: (String Int)))的实现.

not*_*xit 19

这个问题已在这里得到解答:scala tuple拆包

首先,通过部分应用程序将foo设为函数,然后tupled使用参数列表调用:

(foo _).tupled(myTuple)
Run Code Online (Sandbox Code Playgroud)