読者です 読者をやめる 読者になる 読者になる

nil による NoMethodError を回避する(Ruby)

Ruby のメソッドで例外に nil を返すものは多く、NoMethodError が出て処理が止まることがあります。面倒なので回避するメソッド Object#nil_trans を書きました。self が nil 以外のときは self をそのまま返し、nil のときは引数(デフォルトは空文字列)を返します。

nil_trans.rb

class Object
  def nil_trans(obj = "")
    (self == nil) ? obj : self
  end
end

例。

p nil.nil_trans          #=>""
p nil.nil_trans(0)       #=>0
p false.nil_trans        #=>false
p [0, 1, 2].nil_trans    #=>[0, 1, 2]


ちょっとメソッド名がよくないですね。