try(:[], :name)ってどんな動き?
ActiveSupportで追加された非常に便利なメソッド
engineer = {name: 'aoki', age: 34}
engineer.try(:[], :name)
=> "aoki"
engineer.try(:[], :prefecture)
=> nil
上記のコードの例だと、
nameというキーは存在しているので、そのまま返す
prefectureというキーはないのでnilを返す
engineer = {name: 'aoki', age: 34}
engineer&.[] :name
=> "aoki"
Ruby2.3以降ではこのような書き方も可能
engineer = nil
engineer[:name]
=> NoMethodError: undefined method `[]' for nil:NilClass
engineer.try(:[], :name)
=> nil
engineer&.[] :name
=> nil
NoMethodErrorを避けたい時に便利