折叠scala中的元组列表与解构

Itt*_*ayD 9 scala

scala> val l = List((1,2), (2,3))
l: List[(Int, Int)] = List((1,2), (2,3))
Run Code Online (Sandbox Code Playgroud)

我可以

scala>  (0 /: l) {(a, i) => i._1 + a}
res20: Int = 3
Run Code Online (Sandbox Code Playgroud)

但我希望能够命名元组的元素.就像是:

scala> (0 /: l) {(a, (b,c)) => b + a}
<console>:1: error: not a legal formal parameter
       (0 /: l) {(a, (b,c)) => b + a}
                     ^
Run Code Online (Sandbox Code Playgroud)

我知道我能做到:

scala> (0 /: l) {(a, i) => val (b, c) = i; b + a}
res0: Int = 3
Run Code Online (Sandbox Code Playgroud)

但有没有一种方法可以使代码更简洁(我的真实代码涉及几个这样的折叠,我不喜欢需要为每个代码创建一个变量名称(在上面的例子中为'i'))

Wal*_*ang 19

尝试一下:

(0 /: l) { case (a, (b, c)) => b + a }
Run Code Online (Sandbox Code Playgroud)