有没有办法在不使用临时变量和启动新语句的情况下操作元组的多个值?
假设我有一个方法返回一个元组,我想用内联这些值做一些事情.
例如,如果我想在某个点拆分一个字符串并反转这些部分
def backToFront(s: String, n:Int) = s.splitAt(n)...
Run Code Online (Sandbox Code Playgroud)
我可以
val (a, b) = s.splitAt(n)
b + a
Run Code Online (Sandbox Code Playgroud)
(需要临时变量和新声明)或
List(s.splitAt(n)).map(i => i._2 + i._1).head
Run Code Online (Sandbox Code Playgroud)
(工作,但似乎有点脏,为此创建一个单独的元素列表)或
s.splitAt(n).swap.productIterator.mkString
Run Code Online (Sandbox Code Playgroud)
(适用于这个特定的例子,但只是因为碰巧有一种swap方法可以做我想要的,所以它不是很一般).
zipped关于元组的方法似乎只适用于列表元组.
另一个例子,你怎么能把元组('a, 'b, 'c)变成('b, 'a, 'c)一个声明?