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

これらは2つのまったく異なるものです。これを行うyield iと、実際には数値 i が生成され、出力は 1 2 3 になります。ただし、コードのポイントは、配列の要素を生成することなので、yield を生成しますself[i]。これは、「配列の i 番目の要素」を意味します。 self」、またはより技術的には「引数を指定してメソッド[]を呼び出し、結果を生成する」。selfi

于 2009-09-16T17:47:03.693 に答える
2

yield(i)はインデックスのブロックをyield(self[i])生成し、i 要素のブロックを生成します

于 2009-09-16T17:44:44.993 に答える