【发布时间】:2015-11-21 14:27:15
【问题描述】:
为什么Enumerable#map 只支持块,而Enumerable#inject 支持其他类型,例如符号?
我希望以下工作
["1", "2"].map(:to_i).inject(:+)
但只有以下有效
["1", "2"].map(&:to_i).inject(:+)
尽管如此,同时使用& 也适用于这两项工作
["1", "2"].map(&:to_i).inject(&:+)
哪一个是最佳实践,为什么?
【问题讨论】:
-
嗯,这看起来像重复
-
找不到好的帖子(我记得在这里看到过),但简短的回答是(IIRC):因为它是这样实现的。
-
如果两种方法都排除符号或仅块,会更一致,不是吗?我认为 ruby 是超级一致的 :-)
-
哦,但是与 PHP 相比,它是一致性的顶峰。 :)
-
如果你讨厌我的答案,我会删除它。
标签: ruby symbols proc enumerable