From: matz@... (Yukihiro Matsumoto) Date: 2002-03-26T01:13:55+09:00 Subject: [ruby-dev:16592] Re: defined? autoload constant まつもと ゆきひろです In message "[ruby-dev:16590] Re: defined? autoload constant" on 02/03/25, 石塚圭樹 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?を適用して るからです。やりすぎか。