yarv-dev:416
From: SASADA Koichi <ko1 atdot.net>
Date: Wed, 16 Feb 2005 23:49:58 +0900
Subject: [yarv-dev:416] Re: defined? について
Yukihiro Matsumoto <matz ruby-lang.org> wrote :
[ [yarv-dev:415] Re: defined? について ]
at Wed, 16 Feb 2005 22:59:50 +0900
ささだです。
> とすると、どのようなケースで楽したいと思ったんですか。
>
> defined?(a.b.c(d,e))
>
> とか?
はい。ほかにも "assignment" などを考えなくて済むので楽が
出来るかと。
(defined?(obj.attr= x) みたいなものはサポートしない)
var および (recvexpr).method のみだと、
NODE_LVAR
NODE_IVAR
NODE_CVAR
NODE_GVAR
NODE_CONST
NODE_*CALL
のみを気にするだけで済みそうで、楽かなと考えました。
(今、記憶を頼りに挙げたので、ミスがありそうな気がしますが)
ただ、上記のノードだけでも、
p( defined?(A::B::C) ) #=> nil
class A
end
p( defined?(A::B::C) ) #=> Exception `NameError' at t.rb:6 - uninitialized constant A::B
と、上記のような挙動を考え出すとちょっと面倒そうですね。
他にも、
p( defined?(a = b) ) #=> "assignment"
p( defined?(@a = b) ) #=> nil
@a = 1
p( defined?(@a = b) ) #=> nil
b = 1
p( defined?(@a = b) ) #=> "expression"
とか、なぜこうなるのか理屈がわかっていないので、できれば削っ
ちゃったほうがいいかなー、とか。いや、わからないから削れとい
うのは反論になりませんね。
--
// SASADA Koichi at atdot dot net
//
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
412 2005-02-16 20:02 [ko1 atdot.net ] defined? について 413 2005-02-16 22:17 ┗[matz ruby-lang.org ] 414 2005-02-16 22:36 ┗[ko1 atdot.net ] 415 2005-02-16 22:59 ┗[matz ruby-lang.org ] -> 416 2005-02-16 23:49 ┗[ko1 atdot.net ] 417 2005-02-16 23:58 ┣[matz ruby-lang.org ] 418 2005-02-17 00:02 ┃┗[matz ruby-lang.org ] 419 2005-02-17 00:14 ┗[matz ruby-lang.org ] 420 2005-02-17 03:59 ┗[ko1 atdot.net ] 421 2005-02-17 04:15 ┗[matz ruby-lang.org ]