スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

【Ruby】論理演算子 &&= について

※記事内に提携先企業のアフィリエイト広告(リンク、バナー等)、Google広告を含む場合があります

&&=について




背景

||= はよく見るのですが、&&= は業務で初めて見て、??となったので備忘録として残しておきます。

左辺がtrueと見なされる値なら、右辺を評価し、結果を左辺に代入するという挙動をします。

例、

irb(main):002:0> user = 'ユーザーです'
=> "ユーザーです"

irb(main):003:0> user &&= 123
=> 123

# 123が代入され、'userです' が上書きされている
irb(main):004:0> user
=> 123

***

[1] pry(main)> hoge = 'hogeです'
=> "hogeです"

[2] pry(main)> hoge &&= false
=> false

# 右辺のfalseが代入されている
[3] pry(main)> hoge
=> false

***

[4] pry(main)> fuga = 'fugaです'
=> "fugaです"

[5] pry(main)> fuga &&= ''
=> ""

# 左辺の""が代入されている
[6] pry(main)> fuga
=> ""

左辺が falseと見なされる場合かつ、右辺がtrueと見なされる値の場合

irb(main):020:0> hoge = nil
=> nil

irb(main):021:0> hoge &&= 123
=> nil

# 左辺のhogeがnilなので、右辺の123は評価されず、nilが返却される
irb(main):022:0> nil
=> nil

***

[12] pry(main)> foo = false
=> false

[13] pry(main)> foo &&= true
=> false

# こちらも右辺は評価されない
[14] pry(main)> foo
=> false

***

[1] pry(main)> number &&= 123
=> nil

# numberが直前まで未定義の場合でも、エラーとはならず、nilを返す。
[2] pry(main)> number
=> nil

左辺が{}、[]の場合かつ、右辺がtrueと見なされる値の場合

irb(main):014:0> hoge = []
=> []

irb(main):015:0> hoge &&= 123
=> 123

irb(main):016:0> hoge
=> 123

***

irb(main):017:0> hoge = {}
=> {}

irb(main):018:0> hoge &&= 123
=> 123

irb(main):019:0> hoge
=> 123




RailsやRubyを学びたい人へ


RailsやRubyを学びたい人は、

Udemy で下記のコースを受講すると良いです★


✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座

✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。

✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




また、

Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、

「30日間なら返金できる」ので、

満足できなかった時でも安心です。


f:id:mah666hhh:20201129193352p:plain


【公式】Udemyで学んでみる