Scala: (Array [Int], Array [Int]) => Array [Int] с помощью + - PullRequest
0 голосов
/ 24 апреля 2018

Итак, я хочу «объединить» два массива [Int], добавив значение одного и того же индекса.Это должно выглядеть так:

newarray(0) = array1(0)+array2(0)...
f.e. Array(1,2,3)+Array(1,1,1,1,1) = Array(2,3,4,1,1)

Я написал:

(array1, array2).zipped.map(_+_)

Но это, очевидно, вызывает ArrayIndexOutOfBoundsexception, когда array1.length! = Array2.length.

I 'm также ищет самое умное и самое короткое возможное решение.

1 Ответ

0 голосов
/ 24 апреля 2018

Предложение для начала может быть примерно таким:

val v1 = Seq(1, 2, 3, 4)
val v2 = Seq(1, 2, 3, 4, 5)
val v3 = v1.zip(v2).map(_+_)
println(s"V3: $v3")

Это даст следующий вывод, где последний элемент v2 игнорируется:

V3: List(2, 4, 6, 8)

Однако, если вы хотите установить значение по умолчанию для определенного значения, вы можете использовать zipAll, например так:

val v1 = Seq(1, 2, 3, 4)
val v2 = Seq(1, 2, 3, 4, 5)
val v3 = v1.zipAll(v2, 0, 0).map(_+_)
println(s"V3: $v3")

, который даст вам следующий вывод, где более короткий массив дополняется нулевым значением:

V3: List(2, 4, 6, 8, 5)

РЕДАКТИРОВАТЬ: Я вижу, вы немного прояснили свой вопрос.Похоже, вы ищете второй вариант, используя zipAll.

...