根据ApiDock,Ruby方法Enumerable#each_with_object已被弃用.除非它是错误的(说"在Rails的最新稳定版本上弃用"让我怀疑可能是Rails的猴子修补已被弃用),为什么它被弃用了?
saw*_*awa 50
这是对否定你的问题预设的答案,也是为了确定它是什么.
方法each_with_object可以节省额外的击键次数.假设您要从数组中创建哈希.有了inject,您需要额外h的以下内容:
array.inject({}){|h, a| do_something_to_h_using_a; h} # <= extra `h` here
Run Code Online (Sandbox Code Playgroud)
但是each_with_object,你可以保存输入:
array.each_with_object({}){|a, h| do_something_to_h_using_a} # <= no `h` here
Run Code Online (Sandbox Code Playgroud)
所以尽可能使用它是好的.但是有一个限制.我也在这里回答,
当初始元素是可变对象(如Array,, Hash)时String,可以使用each_with_object.
当初始元素是一个不可变对象时Numeric,你必须使用inject如下.
sum =(1..10).inject(0){| sum,n | sum + n}#=> 55
Chu*_*uck 10
有没有注意到在Ruby主干的源代码,方法是仍然存在(与该网页的说法),并有过它的邮件列表,我可以找到没有说话.
APIdock很简单.APIdock说它已被弃用的地方实际上是标准库中使用该方法的最早版本(而不仅仅是ActiveSupport反向扩展),如果你使用的是具有该方法的Ruby,Rails会禁用它的版本,因此APIdock似乎对在项目之间迁移的方法感到困惑.
嗯,这看起来有点奇怪.甚至Agile Rails也写道:"Ruby 1.9 each_with_object方法被发现非常方便,Rails工作人员将它向后推送到Ruby 1.8".看起来像apidock中的错误?我没有看到任何理由:/
| 归档时间: |
|
| 查看次数: |
7703 次 |
| 最近记录: |