我试图编写一个使用零值作为零求和的助手。利用this answer.
中的以下方法items.map(&:some_field).sum(&:to_i)
问题在于,由于我正在编写帮助程序,因此需要将:some_field
作为变量传入。然后我如何在.map中使用该变量?如下所示:
items.map(&:send(field)).sum(&:to_i)
任何提示都将不胜感激
答案 0 :(得分:6)
您可以继续使用以下代码
items.map(&field).sum(&:to_i)
请注意,我刚删除了" :"符号。这里字段是您的变量
答案 1 :(得分:5)
您只需手动编写传递给map
方法的块:
items.map { |item| item.public_send(field) }.sum(&:to_i)
块是Ruby中的闭包,因此如果此范围中有field
局部变量,它也可以在块内访问。