Вопрос новичка Скала о простых операциях с математическим массивом
Новичок Скала Вопрос:
Скажем, я хочу сделать это [код 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))
}