今までJavaScriptで「xがnullでなければxをそのまま、そうでなければ、y」というのを以下の三項演算子でやってた。
※Rubyではもっと短くかけた気がする。
hoge = x ? x : y
でも、先程のxが以下のように式が長い時が凄い冗長。
同じ式を2度も書くのは嫌。DRYしたい。
hoge = hoge+bar*foo ? hoge+bar*foo : y
変数×に入れてやろうと思ったが、これはできない
hoge = (x=hoge+bar*foo) ? x : y
hoge = x ?? y
だから先程のうざい式もこんな風にできるはずだ。実行してないけど。
hoge = (hoge+bar*foo) ? ? : y
C#うらやましーって思ってたら、JavaScriptではこんな書き方がOK。
hoge = (hoge+bar*foo) || y
RubyはなんかややこしいなFixnumとか
>> hoge=1 => 1 >> bar=2 => 2 >> foo=3 => 3 >> y=4 => 4 >> hoge = (hoge+bar*foo) || y => 7 >> hoge => 7 >> hoge=nil => nil >> foo=nil => nil >> hoge = (hoge+bar*foo) || y TypeError: nil can't be coerced into Fixnum from (irb):9:in `*' from (irb):9