使用できますzip:
val ms: List[Message] = ???
val as: List[Author] = ???
var sms = for ( (m, a) <- (ms zip as)) yield new SmartMessage(m, a)
気に入らない場合は、for-comprehensions次を使用できますmap。
var sms = (ms zip as).map{ case (m, a) => new SmartMessage(m, a)}
メソッドzipは、ペアのコレクションを作成します。この場合List[(Message, Author)]。
zippedメソッド on Tuple2(および on Tuple3)を使用することもできます。
var sms = (ms, as).zipped.map{ (m, a) => new SmartMessage(m, a)}
ご覧のとおりmap、この場合はパターン マッチングは必要ありません。
追加
ListでありSeq、Seq秩序を維持します。scala コレクションの概要を参照してください。
コレクションには、 Seq、Set、Mapの 3 つの主要なブランチがあります。
- Seqは要素の順序を保持します。
- セットには重複する要素が含まれていません。
- Mapには、キーから値へのマッピングが含まれます。
Listin scala is linked listであるため、要素を追加するのではなく、先頭に追加する必要があります。scala コレクションのパフォーマンス特性を参照してください。