rails consoleやirbは、以下のように入力したコマンドの返り値を出力する。
irb(main):001:0> 1 + 1
=> 2
しかし、処理内容によっては返り値の出力が不要な場合がある。
irb(main):001:0> array = [1, 2, 3]
irb(main):002:0> array.each {|x| puts x + 1}
2
3
4
=> [1, 2, 3]
# 見たいのはputsの値なので、[1, 2, 3]はいらない
配列の中身がこれぐらいならさして問題ないが、例えばactive recordの検索結果のように要素がたくさんあるような場合には、返り値の出力が終わるまで長々と待たされることもある。
このような場合には、ステートメントの最後にnilを返すと、出力がnilだけになり出力待ち時間がほぼ無くなる。
irb(main):003:0> array.each {|x| puts x + 1}; nil
2
3
4
=> nil
また、複数の処理を行い、かつ、途中の出力結果が入らない場合には、「複数の処理を返り値がnilのメソッド化して呼び出す」という手もある。
irb(main):003:0> def hoge
irb(main):004:1> array = [1,2,3]
irb(main):005:1> array.each {|x| puts x + 1}
irb(main):006:1> array.each {|x| puts x + 2}
irb(main):007:1> nil
irb(main):008:1> end
=> :hoge
irb(main):009:0> hoge
2
3
4
3
4
5
=> nil
コメント