数组的未定义方法“each”

Undefined method `each ' for an array

我正在尝试遍历一个数组,其中包含用于测试用例的 class 的各种实例。根据 RubyDoc,数组应该有一个 each 函数:

Like all classes that include the Enumerable module, Array has an each method, which defines what elements should be iterated over and how.

以下代码有效:

@array = []
(0..20).to_a.each{ |i|
  @array.push(i)
}
@array.each { |i|
    puts i
}

但是这个没有:

@violation_array = []
(0..2).to_a.each{ |i|
  @violation_array.push(Violation.new("violation#{i}"))
}
@violation_array.each { |violation|
  puts violation
}

并产生此错误:

NoMethodError: undefined method `each ' for #<Array:0x007f3aa232ece8>

each 之前的 @violation_array.inspect 的值为:

[#<Violation:0x007f71e4965e30 @key="violation0">, #<Violation:0x007f71e4965bb0 @key="violation1">, #<Violation:0x007f71e49657f0 @key="violation2">]

知道为什么这个数组缺少 each 函数吗?

编辑:我在多个设置中遇到了这个问题(python、ruby、markdown)。 2 年后我终于明白了:我总是在输入 space 的同时仍然按住需要它的前一个或后一个字符的 AltGr。这导致无法加密 space,请参阅 了解解决方案)。

我认为错误消息可能很有启发性。方法名中有一个space,所以不存在的方法是"each "。不知何故,我认为您的代码中出现了一些虚假的 whitespace 。肯定有 数组上的 "each" 方法,但没有 "each " 方法。