Вопрос новичка Скала о простых операциях с математическим массивом

Новичок Скала Вопрос:

Скажем, я хочу сделать это [код Java] в Scala:

public static double[] abs(double[] r, double[] im) {
  double t[] = new double[r.length];
  for (int i = 0; i < t.length; ++i) {
    t[i] = Math.sqrt(r[i] * r[i] + im[i] * im[i]);
  }
  return t;
}  

а также сделать его универсальным (поскольку Scala эффективно выполняет общие примитивы, которые я прочитал). Опираясь только на базовый язык (без библиотечных объектов / классов, методов и т. Д.), Как можно это сделать? По правде говоря, я вообще не понимаю, как это сделать, поэтому я думаю, что это просто вопрос о бонусных баллах.

Я столкнулся со многими проблемами, пытаясь сделать эту простую вещь, от которой я отказался в Scala на данный момент. Надеюсь, когда я увижу Scala, у меня будет момент «ага».

ОБНОВЛЕНИЕ: Обсуждая это с другими, это лучший ответ, который я нашел до сих пор.

def abs[T](r: Iterable[T], im: Iterable[T])(implicit n: Numeric[T]) = {
   import n.mkNumericOps                                                   
   r zip(im) map(t => math.sqrt((t._1 * t._1 + t._2 * t._2).toDouble))          
}

Ответы на вопрос(4)

Ваш ответ на вопрос