3

我有一些变量,我想通过一个函数运行每个变量来创建新变量。所以基本上我现在有

val formatted1 = format(raw1)
val formatted2 = format(raw2)
val formatted3 = format(raw3)

有没有办法在一条线上做到这一点?寻找类似的东西

val (formatted1, formatted2, formatted3) = (raw1, raw2, raw3).map(format)

但这似乎以不兼容的方式结合了 List 的功能和 Tuple 的功能。

4

1 回答 1

13

您可以映射元组,但如果您将项目放在列表中:

val List(formatted1, formatted2, formatted3) = List(raw1, raw2, raw3).map(format)

这适用于许多其他集合,如 Seq、Array 等(两边的类型必须相同!但左侧可以有更通用的类型:例如val Seq(...) = List(...))。

对于列表(但不适用于其他类型),您还可以编写如下内容:

val formatted1::formatted2::formatted3::Nil = List(raw1, raw2, raw3).map(format)

从 Scala 2.10 开始,您可以使用 Seq 执行相同的技巧:

val formatted +: formatted2 +: formatted3 +: _ = ....
于 2013-03-04T19:48:31.173 回答