6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Ruby on Rails】try(:[ ], :key)を読み解く

Posted at

はじめに

user.try(:[],:name)

初めてこのコードを見た時、
「なんで空の配列をメソッドの部分に入れているんだ、、、?」
と思いました。
Ruby(Rails)の文法をすっ飛ばしてきた弊害ですね、、、

##そもそもRailsのtryとは?

Active Supportに搭載されているメソッド (Rubyだけでは使えない)
対象のオブジェクトがnilでない時のみ、指定したメソッドを使う
第一引数に使いたいメソッド、第二引数にその引数(必要であれば)を与えます

user = {name: "test"}

# user[:group]がnilであるため、メソッドエラーが起きる
user[:group].replace("A")
# => NoMethodError: undefined method 'replace' for nil:NilClass

# nilな対象に対してtryを使うとエラーは起きず、nilが帰ってくるだけ
user[:group].try(:replace,"A")
=> nil

空の配列がメソッドに?

それでは本題ですが、rubyのHashには[]のメソッドがあります。
引数にkey名を取ってそのvalueを返します。

user.[] :name
=> "test"
# これはuser[:name]と同じ

ちなみに、「+」などもメソッドとして使えます。

user[:name].+ 2
=> "test2"

今回の場合はtryとこのメソッドの組み合わせなので

user.try(:[],:name)
=> "test"

という結果が返ってきます。

まとめ

[]についてなかなかヒットしなかったので少し理解に苦しみました。
ruby/railsの文法を勉強し直します、、、

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?