電話すると
@data.each do |d|
some code here
end
メソッドは何each
を返しますか?オブジェクトの配列?または、より一般的には、do
...end
ブロックは何を取りますか?
電話すると
@data.each do |d|
some code here
end
メソッドは何each
を返しますか?オブジェクトの配列?または、より一般的には、do
...end
ブロックは何を取りますか?
列挙可能なオブジェクトのメンバーを繰り返し処理します。したがって、@data
が配列の場合、配列の要素を一度に1つずつ返しd
ます。正確な動作は、オブジェクトのタイプによって異なります。ドキュメントを参照してください
Books.all
オブジェクトを返します。これは配列ではありませんが、この場合は1つのように動作します。
each
この場合、レシーバーを返します@data
。do
...はend
ブロックです。このメソッドは、データ内の値ごとに1回each
(メソッドを使用して)ブロックを実行します。yield
これはイテレータと呼ばれます。配列の場合は配列内のすべての値を反復処理し、ハッシュの場合は(key、value)のペアごとに1回実行します。独自のクラスに対して独自のイテレータを定義できます。
の戻り値はeach
、呼び出されるオブジェクトによって異なります。配列で呼び出されると、配列を返します。
あなたの場合、メソッドeach
は各値ごとに1回ブロックを実行し、各値をパラメーターとしてブロックに送信します。
例えば-
a = [1,2,3]
a.each do |n|
p n
end
と同じです
p a[0]
p a[1]
p a[2]