2016-11-16 8 views
3

私はこのような2つの配列を有する:私はL1に同じ位置に配列内L2の値を入れたいとその連結方式2つのスカラアレイ

Array((1,2,3,"a"), (6,2,-3,"b"), (6,2,-4,"c")) 
ような最終的なアレイを得ることが

val l1 = Array((1,2,3), (6,2,-3), (6,2,-4)) 
val l2 = Array("a","b","c") 

私のような何かを考えていた:

val l3 = l1.map(code...) 

しかし、私は、L1上の地図の間のL2に反復処理する方法がわかりません。
ご存知ですか?

答えて

6

Zippingでこのようにコレクションを組み合わせることができます。

l1.zip(l2).map{ case (x,y) => (x._1, x._2, x._3, y) } 
1

各アレイの要素にアクセスするために使用されるインデックスには、mapが必要です。

(0 until l1.length).map{ idx => 
    (l1(idx)._1, l1(idx)._2, l1(idx)._3, l2(idx)) 
} 
res0: IndexedSeq[(Int, Int, Int, Char)] = Vector((1,2,3,a), (6,2,-3,b), (6,2,-4,c)) 
+0

は、あなたが 'l1.indices'代わりに'オフずつエラーを防ぐため(l1.lengthまで0) 'を使用する必要があります –

+1

ありがとうございました。 –

+0

@ corvus_192、優れた提案ですが、mariosには依然として優れたソリューションがあります。 – jwvh