1. ホーム
  2. ルビー

[解決済み】&とは?(アンパサンドドット)はRubyではどういう意味ですか?

2022-04-10 17:26:22

質問

このようなrubyのコードに出会いました。このコードは &. の意味を教えてください。

@object&.method

解決方法は?

これは、Safe Navigation Operatorと呼ばれるものです。Ruby 2.3.0 で導入されたこの演算子を使うと、オブジェクトのメソッドを安心して呼び出すことができ、オブジェクトが nil (この場合 undefined method for nil:NilClass エラー) と同様に try メソッドで、Railsの .

ということで、次のように書くことができます。

@person&.spouse&.name

ではなく

@person.spouse.name if @person && @person.spouse

から ドキュメント :

my_object.my_method

これは my_method メッセージから my_object . どんな オブジェクトは受信者になることができますが、メソッドの可視性によっては メッセージを送信すると NoMethodError .

を使用することができます。 &. で受信者を指定し、次に my_method は呼び出されません。 となり、その結果は nil のとき、レシーバが nil . この場合 の引数は my_method は評価されない。