あなたはzip
を使用することができます。
val ms: List[Message] = ???
val as: List[Author] = ???
var sms = for ((m, a) <- (ms zip as)) yield new SmartMessage(m, a)
あなたが好きではない場合は、map
を使用することができfor-comprehensions
:
var sms = (ms zip as).map{ case (m, a) => new SmartMessage(m, a)}
方法zip
はペアのコレクションを作成します。この場合、List[(Message, Author)]
。
あなたはまたTuple2
(およびTuple3
上)にzipped
メソッドを使用することができます。
var sms = (ms, as).zipped.map{ (m, a) => new SmartMessage(m, a)}
あなたはこのケースでmap
でパターンマッチングを必要としない見ることができるように。
エクストラ
List
Seq
あるとSeq
は順序を保持します。 scala collections overviewを参照してください。
Seq,およびMapの3つの主要な支店があります。
- Seq要素の順序を保持します。
- Setには重複する要素が含まれていません。
- Mapには、キーから値へのマッピングが含まれています。 Scalaでは
List
linked listあるので、あなたは追加しない、それに要素を付加する必要があります。スカラコレクションのPerformance Characteristicsを参照してください。
'zip'は最大3つのリストで十分です。あなたがもっと持っているなら、あなたはこの質問/答えを見たいかもしれません:http://stackoverflow.com/a/17072064/770361 –