[前][次][番号順一覧][スレッド一覧][生データ]

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  ]