まつもと ゆきひろです

In message "[ruby-list:35017] Re: 式にならない文← a = 4 ; p((a < 3) or (a > 5))"
    on 02/05/08, "丹生 光則 Nibu,Mitsunori." <nibu / tec.osaka.jip.co.jp> writes:

|> 引数の括弧と式の括弧は見かけ上区別がつかないことが、たけさん
|> の混乱の原因だと思います。こればっかりは私ではどうにもなりま
|> せん。Wolframみたいな勇気はないので。
|> 
|> ただ、1.7では上記は式の括弧と解釈されるのでより混乱を助長し
|> ているというのはあるかも。
|
|これはよく理解できませんでした.
|
|確かに,
|p ( not true )
|はSyntaxエラーが返り,
|p (( not true ))
|は「false」が表示されますね.(ruby 1.6.4)
|
|しかし,前者の場合,括弧が引数を囲むものと解釈されたとしても,
|not true
|自身は,単項演算子+定数ですから,式なのではないでしょうか?

他の言語では「値を持たないのが文、値を持つのが式」という定義
のものが多いので誤解を招いているかもしれません。Rubyでは「直
接引数にできるものが式、そうでないものが文」です。

「not true」は値を持ちますが、直接は引数におけないので「文」
です。で、置けない理由は優先度です。

                                まつもと ゆきひろ /:|)