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'))