【Ruby】?記法、応用編 視力検査
さっき、クエスチョンマークが連続した問題を解いたけど
Goroさんが応用問題を作ったんだって。
Q. ??.a??????:?? はvalidな #Ruby プログラムです。これの構文を解説してください。 ( https://t.co/mT1aoEf4rr の応用問題)
— Fuji, Goro (@__gfx__) November 15, 2013
これは、さっきの?記法が分かったら簡単だねー。
ポイント
最初の「Q. 」は、質問って意味で、構文には含まれない!
これ嵌った。
もー。
回答
?記法と条件演算子の組み合わせ。
構文全体
??.a??????:??
を分けて考えると、
まず 頭の部分、
??.a???
は
"?".a?("?")
なわけで、こう書くと分かりやすい。
class String def a?(str) p str end end ??.a???
■実行結果
"?"
そうすると構文は、
"?"???:??
となって、これはもう条件演算子。
Rubyはnil以外はtrueになる。
こうやって書き直すと分かりやすい。
p "?"? "hoge":"aa" p !"?"? "hoge":"aa"
■実行結果
"hoge" "aa"
なるほどねー。
視力検査みたいだね。