From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2002-03-20T15:14:39+09:00 Subject: [ruby-dev:16502] Re: defined? autoload constant けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :16482 ] the message: "[ruby-dev:16482] Re: defined? autoload constant ", on Mar/19 12:42(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|うーん. なかなか難しいですよね... Klass#methodって表記から >| >|defined? #method >|defined? Klass#method >| >|ぐらいですか. 思いつくのは. > >「#」はコメントですからねえ。上手に使うのは難しいですねえ。 やっぱ, ですかねぇ... >|あ. 最後に 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" __ ..............................石塚 圭樹@日本ラショナルソフトウェア... ----------------------------------->> e-mail: keiju@rational.com <<---