3

いくつかの変数があり、それぞれを関数で実行して新しい変数を作成したいと思います。だから本質的に私は現在持っています

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

これをすべて1行で行う方法はありますか?のようなものを探しています

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

しかし、それは互換性のない方法でリストの機能とタプルの機能を組み合わせているようです。

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 に答える