我有一些变量,我想通过一个函数运行它们来创建新的变量.所以基本上我现在得到了
val formatted1 = format(raw1)
val formatted2 = format(raw2)
val formatted3 = format(raw3)
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行中完成这一切?寻找类似的东西
val (formatted1, formatted2, formatted3) = (raw1, raw2, raw3).map(format)
Run Code Online (Sandbox Code Playgroud)
但这似乎以不兼容的方式组合了List的特征和元组的特征.
om-*_*nom 12
您可以映射元组,但是如果您将项目放在列表中:
val List(formatted1, formatted2, formatted3) = List(raw1, raw2, raw3).map(format)
Run Code Online (Sandbox Code Playgroud)
这适用于许多其他集合,如Seq,Array等(两边的类型必须相同!但您可以在左侧使用更多通用类型:例如val Seq(...) = List(...)).
对于列表(但不适用于其他类型),您还可以编写如下内容:
val formatted1::formatted2::formatted3::Nil = List(raw1, raw2, raw3).map(format)
Run Code Online (Sandbox Code Playgroud)
从Scala 2.10开始,您可以使用Seq执行相同的技巧:
val formatted +: formatted2 +: formatted3 +: _ = ....
Run Code Online (Sandbox Code Playgroud)