けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev :16608 ] the message: "[ruby-dev:16608] Re: defined? 
autoload constant ", on Mar/26 15:09(JST) Yukihiro Matsumoto writes:

>まつもと ゆきひろです

>|>(1)はmethodでしょう。+もメソッドだから。かっこは構文解析の段
>|>階で消えてしまっています。
>|
>|以前(今回の修正前まで)は, expressionでしたが, そっちがおかしい?
>
>そうです。NODE_NEWLINEに対応していませんでした。

なるほど.

>|fooが定義されていないと 1+foo がnilなのは, 何か変な気がしないでもない.
>
>私の感覚では、fooが定義されていないのに 1+foo が定義されてい
>るほうが「何か変な気がしないでもない」なんですけど。

>|fooが定義されれば, 1+fooがexpressionになるならわからんでもないけど,
>|methodなんでしょ. そうすると, fooが定義されると、1+fooがメソッドとして定
>|義される? 
>
>えーと、これは(私の希望としては)真偽値と種別は少し分けて考え
>てもらえると助かります。つまり、defined?が真を返すときには、
>その「式」は定義されているということが分かると。そして、定義
>されているときの式の種別はなにかという情報が文字列として与え
>られると考えてください。

あーなるほど. defined?ってそういうものなのですね. って確にマニュアルには
そう書いてあるけど... 

>ですから、1+fooは1もfooも両方が定義されているときに真となり、
>そして真であるときには、その種別はメソッド呼び出しであるとい
>う解釈です。

そうか, "method"が戻り値だけど, 実際には``メソッド呼び出し式''なのね...

defined? foo

とかすると, "local-variable"とか帰ってくるので, fooが``ローカル変数''っ
て意味なのかと思っていた. 厳密には, ``ローカル変数だけからなる式''って意
味なのね...

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---