2017-08-02 7 views
2

以下はRubyの名前付き引数の例ですが、アンパサンドは何をしていますか?Rubyパラメータの末尾にあるアンパサンドは何を意味しますか?

def set_tools(foo:, bar:, baz:) 
    @instance_variable = baz&.stuff 
+1

[セーフナビゲーションオペレーター](http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/)です。 Ruby 2.3でデビューしました。 –

+1

こちらをご覧くださいhttps://stackoverflow.com/questions/36812647/what-does-ampersand-dot-mean-in-ruby –

答えて

6

それは、航行安全オペレータと呼ばれています。ルビーで導入2.3.0

あなたはそれたとえば

にいくつかのメソッドを呼び出す前に値が存在することを確認するためにそれを使用することができます:あなたが代わりに

のこの演算子を使用することができます

a = nil 

a.some_method # This will break 

#=> NoMethodError: undefined method `some_method' for nil:NilClass 

a&.some_method # This will not 

#=> nil 

この演算子を使用して

a && a.some_method && a.some_method.some_other_method 
# OR 
a.try(:some_method).try(:some_other_method) 

a&.some_method&.some_other_method 
関連する問題