読者です 読者をやめる 読者になる 読者になる

ログってなんぼ

日々のメモです

ruby:戻り値にOR使ったり自己代入を試したりしたメモ

パイセンのリファクタリングでコードを書き換えられたとき、ナニコレ的な書き方を見つけることがあります。

必ず復讐復習するようにしましょう

jp = "ほむら"
en = ARGV[0]
p en || jp

p "jp:"+jp.to_s
p "en:"+en.to_s

実行

$ ruby test.rb
"ほむら"
"jp:ほむら"
"en:"

$ ruby test.rb homura
"homura"
"jp:ほむら"
"en:homura"

(´・∀・`)ヘー

自己代入も試してみる

ついでなので確認のつもりで

jp = "ほむら"
en = ARGV[0]
p en ||= jp

p "jp:"+jp.to_s
p "en:"+en.to_s

実行

$ ruby test.rb
"ほむら"
"jp:ほむら"
"en:ほむら"

$ ruby test.rb homura
"homura"
"jp:ほむら"
"en:homura"

(´・∀・`)ヘー

en || (en = jp)

という理解でいいのだろうか

自己代入の場合はenの値が上書きされるのに対して、||演算子の場合は最初にtrueとなった方を返却

まあ、アタリマエのことを確認しただけで終わりましたが、普段プログラムあんまり書かないので自分的には確かめておいて良かったです。