Есть ли способ манипулировать несколькими значениями кортежа без использования временной переменной и запуска нового оператора?
Скажем, я у меня есть метод, который возвращает кортеж, и я хочу что-то сделать с этими значениями в строке.
например если я хочу разделить строку в определенной точке и перевернуть части
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)
в одном утверждении?