Rubyの X || = y みたいなコードの読み方

こんにちは!kossyです!




本日気になったニュースはこちら
thebridge.jp

いいサービスだな、と思ったら既に類似のビジネスが走っているのですね、、、
どんだけこの界隈に疎いんだよ自分、、、

しかしクラウドファンディングに成功してニュースとして取り上げてくれるのはいいですね。
まだサービスがローンチされてない中でこのようにメディアに取り上げてくれるのは、
ある程度の広告効果が期待できそうです。

サービスの提供開始前の広告戦略として参考になるかも。









さて、今回はRubyにおける自己代入のイディオムである、|| = の読み方について、
ブログに残して見たいと思います。





環境
Ruby 2.5.1




Ruby熟練者がよく書くらしい

最初見たときはなんじゃこりゃ、と思いましたが。
Rubyの熟練者の方がよく使うらしいです。
Railsチュートリアルにもこのイディオムは登場してますね。


|| = の解読

端的にまとめると、
「左辺の値がnilであれば、右辺の値を左辺に代入する。もし左辺に値が存在していれば、
右辺の値は評価されない」
と言うイディオムになります。

例えば、

@current_user ||= User.find_by(id: user.id)

というコードがあるとすれば、
「@current_userの値がnilであれば、Userモデルの中のidがuser.idであるレコードを検索して、
@current_userに値を代入する」
という流れになります。

使いこなせれば結構便利ですね。