繁体   English   中英

Scala foldLeft参数太多

[英]Scala foldLeft too many parameters

我有一个称为item的元组列表,列表中的每个索引都包含2 x Double例如

item = ((1.0, 2.0), (3.0, 4.0), (10.0, 100.0))

我想对列表item每个索引执行计算,并且尝试使用foldLeft 这是我的代码:

item.foldLeft(0.0)(_ + myMethod(_._2, _._1, item.size)))

_._2访问索引为1的当前item元组, _._1访问索引为0的当前item元组。例如,对于第一折,它实际上应为:

item.foldLeft(0.0)(_ + myMethod(2.0, 1.0, item.size)))

第二折:

item.foldLeft(0.0)(_ + myMethod(4.0, 3.0, item.size)))

第三折:

item.foldLeft(0.0)(_ + myMethod(100.0, 10.0, item.size)))

其中myMethod:

def myMethod(i: Double, j:Double, size: Integer) : Double = {
  (j - i) / size
  }

这给我一个错误,它表明foldLeft参数太多,因为它需要2个参数。 myMethod返回Double ,而_Double 那么,编译器看到的这个额外参数在哪里?

如果我这样做:

item.foldLeft(0.0)(_ + _._1))

它求和item每个索引中的所有第一个Double ,用_._ 2替换_._ 1求和,对item每个索引中的所有第二个Double求和。

任何帮助是极大的赞赏!

每个_都等效于一个新参数,因此(_ + myMethod(_._2, _._1, item.size))是具有3个参数的匿名函数: (x, y, z) => x + myMethod(y._2, z._1, item.size)

您想要的是(acc, x) => acc + myMethod(x._2, x._1, item.size)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM