Rubyで無駄な変数を減らしたい

投稿者: Anonymous

Rubyぽくないコードを書いてしまったのですが、もっとRubyぽいコードは書けないでしょうか。

それぞれのメソッドの仕様:

  • arrメソッドは配列を返却し、custom_pushメソッドはそれを受け取ります。
  • 最後の要素が4より大きければ、999を配列に挿入する。そうでなければ、そのまま返します。

メソッドの仕様は変えられないのですが、Rubyの良さをより強調できるcustom_pushメソッドの実装にはどのようなものが考えられるでしょうか。

def arr
  [1,2,4] # ケース1
  [1,2,9] # ケース2
end

def custom_push
  a = arr
  if a.last > 4 then
    a << 999   
  end
  a
end

解決

tapを使うとRubyならでは、っていう感じがしますね。

def custom_push
  arr.tap do |a|
    a << 999 if a.last > 4
  end
end

いかがでしょうか?

あと、Rubyっぽいコードに関しては以前僕が書いたこちらの記事が役に立つかもしれません。

[初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか

こちらもあわせてどうぞ。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *