在.map()中使用变量

nea*_*lob 2 ruby ruby-on-rails ruby-on-rails-4 rails-activerecord

我正在尝试编写一个使用nil值为零的求和器.从这个答案中利用以下方法.

items.map(&:some_field).sum(&:to_i)
Run Code Online (Sandbox Code Playgroud)

问题是,因为我正在编写一个帮助器,所以:some_field需要作为变量传入.然后我如何在.map中使用该变量?类似于以下内容:

items.map(&:send(field)).sum(&:to_i)
Run Code Online (Sandbox Code Playgroud)

任何提示将不胜感激

Roh*_*gid 6

您可以使用以下代码继续

items.map(&field).sum(&:to_i)
Run Code Online (Sandbox Code Playgroud)

请注意,我刚刚删除了" : "符号.这里的字段是你的变量


Mar*_*pka 5

您应该只需手动编写传递给map方法的块:

items.map { |item| item.public_send(field) }.sum(&:to_i)
Run Code Online (Sandbox Code Playgroud)

块是Ruby中的闭包,因此如果field此范围中存在局部变量,则它也可以在块内访问.