Во-первых, некоторые исправления:
val test = Array.tabulate[Double](row,col)(_+_)
Это даст Array[Array[Double]]
, и самый простой способ обнулить каждый элемент:
test foreach { inner => in.indices foreach { _ => 0.0 } }
Где вы перебираете все внутренниемассив содержится во внешнем массиве, а для внутреннего массива обновите каждый элемент.Не нужно знать фактическое количество элементов, и при этом это нежелательно (просто представьте, что вы делаете это с параллельным массивом!)
Было бы намного проще в использовании map
и работайте с массивом, как если бы он был неизменным, но это, кажется, идет вразрез с духом вашего первоначального запроса, поэтому быстро движется дальше ...
А также неправильно понимает природу многомерных массивоввозвращается из функции табулирования (например, вложенный массив массивов).Вы также используете сопоставление с образцом, как если бы это был оператор переключения Java, это не совсем верно.Чтобы сопоставить массивы различной размерности, вам нужно что-то вроде этого:
case Array[Double] => ...
case Array[Array[Double]] => ...
Но я бы посоветовал против такого подхода.Было бы нелегко безопасно выразить в системе типов, и вы уже точно знаете, какой тип был возвращен из таблицы, исходя из количества аргументов, которые вы указали