在某些代码中,我发现:
class Job
@@types = [:a, :b, :c, :d].reduce({}) do |acc, cmd|
acc[cmd] = cmd.to_s
acc
end
# ...
end
reduce
没有传递任何内容。这是什么意思?acc
。这是什么意思?答案 0 :(得分:6)
reduce
。这意味着第一次调用该块时acc
的值为{}
。
在Ruby中,函数中的最后一个语句是返回值,因此该块返回acc
。
您可能需要阅读reduce
完全理解此代码的内容。
答案 1 :(得分:1)
- 没有任何内容传递到
醇>reduce
。这是什么意思?
那不是真的。有一个位置参数{}
传递给reduce
以及一个块。
但即使没有通过任何事情,最重要的是什么?没有任何东西被传递到to_s
,但不知怎的,这似乎不会打扰你。
- 只有一个
醇>acc
。这是什么意思?
这意味着与之前的acc
相同:取消引用变量。
答案 2 :(得分:0)
第一个参数({}
)是acc
的初始参数,acc
是reduce
完成时返回的参数。
它只是将数组转换为哈希值,最终结果是:
{:a=>"a", :b=>"b", :c=>"c", :d=>"d"}