LoginSignup
11

More than 3 years have passed since last update.

Rubyの自己代入(||=)とはこんな仕組みです

Last updated at Posted at 2019-07-27

仕事などで人の書いたRubyのコードを見ていると、以下のようなコードを見かけることがあると思います。

test ||= 10
p test # => 10

sample = 20
sample ||= 'sample'
p sample # => 20

sample_txt ||= 'sample'
p sample_txt # => "sample"

||=これは、いわゆる自己代入とググればよく出てくるやつです。

しくみは、変数(test / sample / sample_txt)の中身が、
nilまたは、falseであれば、||=の右辺にある値を変数に代入する。
nilまたは、false以外であれば、変数の値をそのまま利用する。

と言う感じです。

test ||= 1

上記のようなコードは、以下のようなコードを見ると理解しやすいかなと思います。

test || (test = 1)
p test # => 1

論理演算子である(||)は、式全体の真偽が確定した時点で評価された値が戻り値となります。

上記の場合、右辺の変数(test)はnilなので、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
11