irbまたはrailsにいて、を使用して反復を作成するとeach
、構造体全体が端末またはブラウザー内で再度印刷されます。例:
a = [1,2,3,4]
a.each do |number|
puts n
end
irbターミナルまたはブラウザ内での結果:
1
2
3
4
=> [1,2,3,4]
なぜこれ=> [1,2,3,4]
がブラウザ内に表示されるのですか?構造全体が表示されるため、ページに1つのリストを作成できません。
Rubyのすべての式は値を返します。ではirb
、実行したばかりの式によって返される値が。の後に表示され=>
ます。
の戻り値Enumerable::each
は、呼び出したオブジェクトですeach
。この場合は、配列です。[1,2,3,4]
それらが2回印刷されているのがわかります。1回目は副作用として、2回目は戻り値としてです。irbは常にputs
最後の戻り値です。の戻り値each
はそのレシーバーです。irbを使用する場合はこれを回避できませんが、スタンドアロンソフトウェアとしてスクリプトを実行すると表示されません。最初の1
、...4
は、の出力ですputs
。それらは副作用と呼ばれます。
ルビーはブロックすらすべてに戻るからです。つまり、各ステートメントが返されます。irbがすべてのリターンを表示するため、出力が表示されます。スクリプトでは、1回だけ出力されます。
外irb
でそれを実行しなさい、そうすればあなたは悟りを開くでしょう。
ruby -e `[1,2,3,4].each {|ele| puts ele}`