有沒有一種方法來操作元組的多個值而不使用臨時變量並啓動新的語句?操作元組
說我有一個方法返回一個元組,我想用這些值內聯做一些事情。
例如如果我想在某一個點來分割字符串和反向件
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)
?
模式匹配很好! 's.splitAt(n)match {case(a,b)=> b + a}'適用於第一部分 –
可惜標準庫中沒有'fold'方法;那麼你可以's.splitAt(n).fold((a,b)=> b + a)',它也會更有效率。 (是的,當然我自己做了。) –
摺疊是一個很好的名字。我更新了我的答案。 –