8

重複の可能性:
Rails コンソール、戻り値の出力を停止する方法は?

IRB での次のセッションについて考えてみましょう。

>> for a in 1..5 do
?>     puts a
>> end
1
2
3
4
5
=> 1..5
>> 

出力を抑制するにはどうすればよい=> 1..5ですか? これは、Rails コンソール セッションでこれを行う場合に重要です。

for post in Post.find(:all) do
    if post.submit_time > Time.now
        puts "Corrupted post #{post.id} is from the future"
    end
end

最後にすべての投稿を配列として出力したくありません。その出力を抑制するにはどうすればよいですか?

または Ruby スクリプトなど、これを行う他の方法があると確信していますfind_eachが、インタラクティブなセッションでこれを行うことにもっと興味があります。

4

2 に答える 2

27

nilコマンドの最後に追加するだけです。irb の応答行を殺すわけではありませんが、大きなオブジェクトがある場合は、画面が爆破されるのを回避できます。

1.9.3p194 :036 > for a in 1..5 do; puts a; end; nil
1
2
3
4
5
 => nil 
于 2012-07-23T21:50:04.867 に答える
6

これはコア IRB 機能です。式を入力すると、その値が出力されます。この場合、値は1..5です。他の出力は単なる副作用です。

ただし、返される (および出力される) 値を「最小化」することはできます。したがって、大量の AR モデルの配列の代わりに、小さなものを返すことができます。

次のようなことを試してください:

% irb
1.9.3p194 :001 > for a in 1..5 do
1.9.3p194 :002 >     puts a
1.9.3p194 :003?>   end; nil
1
2
3
4
5
 => nil 
于 2012-07-23T21:50:53.417 に答える