From: matz@... (Yukihiro Matsumoto) Date: 2002-03-20T15:51:39+09:00 Subject: [ruby-dev:16503] Re: defined? autoload constant まつもと ゆきひろです In message "[ruby-dev:16502] Re: defined? autoload constant" on 02/03/20, 石塚圭樹 writes: |>副作用がないと保証したことはないんで問題ないのではないかと。 | |仕様としてはね. でも, 副作用があると思って使っている人はいないと思うんで |すが? 「副作用がある」と思っていない人が「副作用はない」と思ってい るとは限らないという気がします。yes, noのほかにdon't careが あるということですね。 |それに, 式が中途半端に実行されているので, どのように実行されるかも |曖昧ですよね? 一応、defined?の決定に必要な最低限を実行しているつもりです。 |まあ, defined?の中に複雑な式を書くなって話はないでもないでしょうが... そういうことだと思います。自己責任ですね。 |ところで, (1), (2)のような動作をするのかよく分らない... | |irb(main):010:0> def foo; p 1; 1; end |nil |irb(main):012:0> def bar; p 2; 2; end |irb(main):021:0> defined?((foo+bar)) |1 |2 |"expression" |irb(main):022:0> defined?((foo+bar)+bar) #(1) |1 |2 |1 |2 |"method" |irb(main):023:0> defined?((foo+bar)+1) #(2) |1 |2 |1 |2 |"method" これはバグかも。