zakihayaメモ

RubyとRailsのことが中心

Object#tryでインデクサを対象にする

まずはObject#tryについて

  def try(method, *args, &block)
     ・・・
  end

なんと!ブロックも使えるのか、知らなかった。

tryを使うと

@object ? @object.name : nil

@object.try(:name)

こんな感じで書けるようになります。
モデルのインスタンスを扱う時とかに非常に役立ちます。


で、このオブジェクトがインデクサメソッドを持ってるとして、

@object ? @object["key"] : nil

をtryを使って書くには

@object.try(:"[]", "key")

としてやればOK