- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
文档说:
Iterates the given block for each element with an arbitrary object, obj, and returns obj
Iterates the given block for each element with an arbitrary object, obj, and returns obj
但是,当我在两种结构上尝试以下操作时,一个结构给出了预期的输出,但其他结构没有。所以我怀疑这两种构造之间存在差异。
each_with_object
%w(foo bar).each_with_object({}) { |str, hsh| hsh[str] = str.upcase }
=> {"foo"=>"FOO", "bar"=>"BAR"}
这里成功了!
with_object
%w(foo bar).with_object({}) { |str, hsh| hsh[str] = str.upcase }
=> NoMethodError: undefined method `with_object' for ["foo", "bar"]:Array
from (irb):1
from C:/Ruby193/bin/irb:12:in `<main>'
这里失败了!
那么这两种方式有什么区别呢?
最佳答案
每个
返回一个 Enumerator 对象。
%w(foo bar).each.class
=> Enumerator
因此,对于第一种情况,数组将首先转换为 Enumerator
,然后作用于 with_object
。
如果您希望第二种情况有效,您必须将数组转换为 Enumerator。您可以使用 .to_enum
、.each
或 .map
来转换数组。
%w(foo bar).map.with_object({}) { |str, hsh| hsh[str] = str.upcase }
=> {"foo"=>"FOO", "bar"=>"BAR"}
更多详情:Enumerator
关于ruby - enum#with_object 与 enum#each_with_object 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14671881/
我想用 index 做 a.each_with_object,比这更好: a = %w[a b c] a.each.with_index.each_with_object({}) { |arr, ha
我正在尝试弄清楚应该如何使用 each_with_object。 我有一个不起作用的求和示例: > (1..3).each_with_object(0) {|i,sum| sum+=i} => 0 我
下面,我们得到一个名为 win_lose 的数组。我们应该创建一个看起来像下面的哈希的哈希。我最初的想法是使用 .count 做一些事情,但在尝试了答案之后,.each_with_object 的效果
根据 APIdock ,Ruby 方法 Enumerable#each_with_object 已弃用。 除非它是错误的(说“在最新稳定版本的 Rails 上弃用”让我怀疑可能是 Rails 的猴子补
这个问题在这里已经有了答案: Strange, unexpected behavior (disappearing/changing values) when using Hash default
我知道 each_with_object 不适用于像 integer 这样的不可变对象(immutable对象)。 例如 (1..3).each_with_object(0) {|i,sum| sum
我想在散列上使用 each_with_object 但不知道应该如何使用它。这是我所拥有的: hash = {key1: :value1, key2: :value2} hash.each_with_
我不得不更新一个数组,我使用了 +=和 <<在传递给 Array#each_with_object 的 block 内的不同代码运行中: 代码1 (1..5).each_with_object([])
为什么在 each_with_object 中使用 0 作为参数没有返回正确的值: [1,2,3].each_with_object(0) {|i,o| o += i } # => 0 但是使用空数组
我对以下 Ruby 行为感到困惑: result = [1,2,3].each_with_object([]) do |elem, memo| memo [[1], [2], [3]] 上面的代
文档说: enum#each_with_object :- Iterates the given block for each element with an arbitrary object, ob
我做了一些基准测试: require 'benchmark' words = File.open('/usr/share/dict/words', 'r') do |file| file.each
#each_with_object和 #inject都可以用来构建哈希。 例如: matrix = [['foo', 'bar'], ['cat', 'dog']] some_hash = matri
当我多年前开始编写 Ruby 时,我花了一段时间才理解 each 之间的区别。和 map .当我发现所有其他的时,情况只会变得更糟 Enumerable和 Array方法。 借助官方文档和many S
我们正在从 Ruby 1.9.3 升级到 Ruby 2,从 Rails 3.x 升级到 Rails4。我们正在使用设计进行身份验证。我们基于 Ryan Bates Railscasts 升级了 gem
我是一名优秀的程序员,十分优秀!