Rubyのor equal演算子の使い方
Rubyには、以下のような書き方があるらしいです。
a ||= b
これはor equal演算子と呼ぶらしいのですが、これについて動きなどを調べてみたのでメモします。
or equal演算子について
コード例
以下のコードについて、or_equal(name)
の部分がそれにあたります。
これはつまり、インスタンス変数@name
が存在すればそれを返し、なければ引数のname
を返す、という動きになります。
class Foo
def name=(name)
@name = name
end
def or_equal(name)
@name ||= name
end
end
インスタンス変数がない場合
name=(name)
でインスタンス変数を生成しない場合、そのままor_equal(name)
の引数が返ります。
foo = Foo.new
p foo.or_equal('foo') # => "foo"
インスタンス変数がある場合
name=(name)
でインスタンス変数を生成した場合、or_equal(name)
の引数によらず、@name
が返されます。
foo.name = 'bar'
p foo.or_equal('foo') # => "bar"
おわりに
使い方が分かりやすいですし、使いこなせればコードがシンプルになると思うので、積極的に使っていこうと思います。 まずはコードを書く時間を確保しよう。。。