有没有一种方法来操作元组的多个值而不使用临时变量并启动新的语句?操作元组
说我有一个方法返回一个元组,我想用这些值内联做一些事情。
例如如果我想在某一个点来分割字符串和反向件
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)',它也会更有效率。 (是的,当然我自己做了。) –
折叠是一个很好的名字。我更新了我的答案。 –