Управление кортежами

Есть ли способ манипулировать несколькими значениями кортежа без использования временной переменной и запуска нового оператора?

Скажем, я у меня есть метод, который возвращает кортеж, и я хочу что-то сделать с этими значениями в строке.

например если я хочу разделить строку в определенной точке и перевернуть части

def backToFront(s: String, n:Int) = s.splitAt(n)...

, я могу сделать

val (a, b) = s.splitAt(n)
b + a 

(требуются временные переменные и новый оператор) или

List(s.splitAt(n)).map(i => i._2 + i._1).head

(работает, но кажется немного грязным, создавая список из одного элемента только для этого) или

s.splitAt(n).swap.productIterator.mkString

(работает в этом конкретном примере, но только потому, что есть метод swap , который делает то, что я хочу, поэтому он не очень общий).

] zipped для кортежей, похоже, предназначен только для кортежей списков.

В качестве другого примера, как вы можете превратить кортеж ('a,' b, 'c) в ('b,' a, 'c) в одном утверждении?

7
задан Luigi a.k.a. Rhys 20 August 2011 в 05:16
поделиться