0

在这个来自博客文章的例子中,

class Array
  def each
    i = 0
    while(i < self.length) do
      yield(self[i])
      i += 1
    end
  end
end

my_array = ["a", "b", "c"]
my_array.each {|letter| puts letter }
# => "a"
# => "b"
# => "c"

是否有必要self在语句中使用:

yield(self[i])

或者可以简单地说:

yield i
4

2 回答 2

4

这是完全不同的两件事。如果你这样做yield i,你实际上会产生数字 i,这将导致输出为 1 2 3。然而,代码的重点是产生数组的元素,所以你 yield self[i],这意味着“数组的第 i 个元素self”,或者更专业地说“使用参数调用方法[]self产生i结果”。

于 2009-09-16T17:47:03.693 回答
2

yield(i)将为索引产生一个块,而yield(self[i])为第 i 个元素产生一个块

于 2009-09-16T17:44:44.993 回答