小编use*_*117的帖子

关于简单数学数组运算的新手Scala问题

新手斯卡拉问题:

假设我想在Scala中执行此操作[Java代码]:

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;
}  
Run Code Online (Sandbox Code Playgroud)

并且它也是通用的(因为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))          
}
Run Code Online (Sandbox Code Playgroud)

scala

9
推荐指数
2
解决办法
3523
查看次数

标签 统计

scala ×1