14
7

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 1 year has passed since last update.

【Ruby】 &. (ぼっち演算子) の使い方

Posted at

Ruby でたまに見かける &. というメソッドについて

&. ってなに?

一般的に「ぼっち演算子」と呼ばれています。
Ruby 2.3 で追加されたメソッドです。

どう使うの?

レシーバ + &. + 呼び出したいメソッド という形で使います。

以下の例では "hoge" という文字列をレシーバとし、
呼び出したいメソッドは upcase (小文字を大文字に変換) とします。

irb(main):001:0> "hoge"&.upcase
=> "HOGE"

どういう時に使えるの?

レシーバが nil の可能性があるような場合、かつレシーバが nil なら nil を返してほしい時に使えます。

普通、レシーバが持っていないメソッドを使おうとすると NoMethodError が発生します。

例えば数字 (Integer) に対して upcase メソッドを使ってみましょう。
upcase メソッドは String 型に対して使うものであるため NoMethodError が発生します。

irb(main):002:0> 1.upcase
...
NoMethodError (undefined method `upcase' for 1:Integer)

nil がレシーバの時も同様です。

irb(main):003:0> nil.upcase
...
NoMethodError (undefined method `upcase' for nil:NilClass)

一方、レシーバが nil の時に &. を使ってメソッドを呼び出すと NoMethodError を発生させず、ただ nil が返ってきます。

irb(main):004:0> nil&.upcase
=> nil

注意点

レシーバが nil ではない時は NoMethodError が発生するので注意しましょう。

irb(main):006:0> 1&.upcase
...
NoMethodError (undefined method `upcase' for 1:Integer)
14
7
1

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
14
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?