良いあそなすちゃん

良い方のあそなすちゃんです!

undefined method `a?`

Rubyの ? でぱっと思いつくのは、1番目の ? はメソッド名の一部(つまり a? というメソッド)で、2番目の ? は三項演算子、3番目はリテラルの ? かなーと思ったけど、それがなんで最終的に undefined method になるのかはちょっとわかんなかった。

と、ここまで書いて、ハッとしたんだけど、? がリテラルなら、2番目の ? は三項演算子の ? ではなくてリテラルとしての?じゃなかろうか。つまり foo.a??? は foo.a?"?" と同義であって、結局評価されているのは .a? というメソッド、.a? というメソッドは foo には定義されていないから undefined method で怒られる、という説はどうだろう。

まとめると .a??? (= .a?"?" ) は .a? というメソッドに 文字列 ? を引数として渡しているにしかすぎないんではなかろうかー??だと思う。新たな疑問として ? ってどういう時に使うの。。。

リテラル