まつもと ゆきひろです

In message "[ruby-dev:16590] Re: defined? autoload constant"
    on 02/03/25, 石塚圭樹 <keiju / rational.com> writes:

|まだ, ちょっとおかしいみたい.
|
|ruby 1.6.7 (2002-03-25) [i686-linux]
|
|irb(main):007:0> def foo; p 1; 1; end
|irb(main):008:0> def bar; p 2; 2; end
|irb(main):010:0> defined?((foo+bar))        #(1)
|1
|"method"
|irb(main):017:0> defined?(foo+(bar+foo))     #(2)
|1
|2
|"method"
|
|(1)はexpressionで, (2)はbarを評価するのはおかしいのでは?

(1)はmethodでしょう。+もメソッドだから。かっこは構文解析の段
階で消えてしまっています。

(2)は「barを呼ぶのはおかしいではないか」ということだと思うの
ですが、現状では実は引数に対しても再帰的にdefined?を適用して
るからです。やりすぎか。