首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala foldLeft参数太多

Scala foldLeft参数太多
EN

Stack Overflow用户
提问于 2014-12-04 19:48:59
回答 1查看 715关注 0票数 0

我有一个名为item的元组列表,列表中的每个索引包含2个Doubles。

代码语言:javascript
复制
item = ((1.0, 2.0), (3.0, 4.0), (10.0, 100.0))

我想对列表item中的每个索引执行一个计算,并且我试图用foldLeft来完成它。这是我的密码:

代码语言:javascript
复制
item.foldLeft(0.0)(_ + myMethod(_._2, _._1, item.size)))

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

代码语言:javascript
复制
item.foldLeft(0.0)(_ + myMethod(2.0, 1.0, item.size)))

第二个褶皱:

代码语言:javascript
复制
item.foldLeft(0.0)(_ + myMethod(4.0, 3.0, item.size)))

第三部分:

代码语言:javascript
复制
item.foldLeft(0.0)(_ + myMethod(100.0, 10.0, item.size)))

其中myMethod:

代码语言:javascript
复制
def myMethod(i: Double, j:Double, size: Integer) : Double = {
  (j - i) / size
  }

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

如果我这么做:

代码语言:javascript
复制
item.foldLeft(0.0)(_ + _._1))

它总结了每个item指数中所有的第一个Double--用_._2代替_._1,将item的每个指数中的第二个Double之和。

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-04 19:57:16

每个_都等价于一个新的参数,因此(_ + 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)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27302756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档