はじめに
ポートフォリオを作成していく中で、「これ何してるの、、?」というコードに出会うことがしばしばあります。
やはり何をするにも土台が大切だろうと言うことでわからないことを一つ一つ調べて備忘録として残していこうと思います。
千里の道も一歩から!
or演算子
左辺を最初に評価し(真偽値かどうか調べる)、偽だった場合に右辺を評価する。
# trueを返す
false || true
#3は真なので左辺で3を返す
3 || 5
# trueを返す
false || nil || true
#trueを返す(trueの箇所で評価は終了。nilの箇所は評価すらしていない)
false || true || nil
自己代入演算子
aが偽か未定義だった場合、aに左辺(今回はhoge)を代入する。
#hogeが返ってくる
a ||= hoge
puts a #=>hoge
#hogeが返ってくる(既にaにはhogeが代入されているので、pogeは代入されない)
a ||= poge
puts a #=>hoge
自己代入演算子が原因で実際に起きたエラー
余談ですが、下記のように自己代入演算子が記述されていたことでRSpecが失敗してしまったことがありました。
.spec/rails_helper.rb
ENV['RAILS_ENV'] ||= 'test'
DockerfileでRAILS_ENVに"development"を代入してしまっていたため、test環境でRSpecを実行できなかったのです。
RAILS_ENV: development
"||"を削除して、testを代入するとエラーは解消しました。
これも詳しい仕組みを理解できていないので、今後調べてみようと思います。
.spec/rails_helper.rb
ENV['RAILS_ENV'] = 'test'
終わりに
演算子はとても多いですが、意味がわかるととても便利なものだなと感じました。
コツコツと一つずつ学んで、土台を固めていきたいと思います。
参考