0

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つのリストを作成できません。

4

4 に答える 4

3

Rubyのすべての式は値を返します。ではirb、実行したばかりの式によって返される値が。の後に表示され=>ます。

の戻り値Enumerable::eachは、呼び出したオブジェクトですeach。この場合は、配列です。[1,2,3,4]

于 2013-01-16T16:45:41.687 に答える
0

それらが2回印刷されているのがわかります。1回目は副作用として、2回目は戻り値としてです。irbは常にputs最後の戻り値です。の戻り値eachはそのレシーバーです。irbを使用する場合はこれを回避できませんが、スタンドアロンソフトウェアとしてスクリプトを実行すると表示されません。最初の1、...4は、の出力ですputs。それらは副作用と呼ばれます。

于 2013-01-16T16:44:55.597 に答える
0

ルビーはブロックすらすべてに戻るからです。つまり、各ステートメントが返されます。irbがすべてのリターンを表示するため、出力が表示されます。スクリプトでは、1回だけ出力されます。

于 2013-01-16T16:44:57.553 に答える
0

irbでそれを実行しなさい、そうすればあなたは悟りを開くでしょう。

ruby -e `[1,2,3,4].each {|ele| puts ele}`
于 2013-01-16T16:47:20.530 に答える