Ale*_*ton 1 ruby
我有这样的代码
list << num if num.to_s.split("").map(&:to_i).map(&:factorial).inject(:+) == num
它工作,我想知道如果inject没有&(&符号)前面的工作:+.我要求别人解释的差异之间有什么:+和&:+.
inject
&
:+
&:+
Uri*_*ssi 6
&:+被转换为proc,:+而是一个符号.inject支持接收符号,内部转换为proc:
如果指定一个块,那么对于枚举中的每个元素,块将传递一个累加器值(memo)和元素.如果指定了符号,则集合中的每个元素都将传递给命名的备忘录方法.在任何一种情况下,结果都将成为备忘录的新值.在迭代结束时,memo的最终值是方法的返回值.
归档时间:
11 年,5 月 前
查看次数:
124 次
最近记录: