From: Yukihiro Matsumoto Date: 2008-08-25T23:19:22+09:00 Subject: [ruby-dev:35969] Re: [ruby-cvs:26052] Ruby:r18834 (trunk): * compile.c (defined_expr): should handle NODE_{AND,OR} as まつもと ゆきひろです In message "Re: [ruby-dev:35968] Re: [ruby-cvs:26052] Ruby:r18834 (trunk): * compile.c (defined_expr): should handle NODE_{AND,OR} as" on Mon, 25 Aug 2008 23:11:15 +0900, SASADA Koichi writes: |Yukihiro Matsumoto wrote: |> | これは,中身を一切実行せずに,って話ですか? |> |> そうです。 | | これは,互換性とか,色々大事なモノを削ってる気がしますが,いいで |しょうか. もともとdefined?は「やりすぎ感」あふれる演算子でしたし、苦労 する割に苦労した部分を使っていないというのも現実でした。まあ、 基本的な部分である * メソッド存在チェック * 変数存在チェック * superチェック * ブロックチェック がちゃんと動作してるなら、後の複合的な部分は「expression」で いいかなあと。 |> | 直すなら,今,わざわざ偽かどうかを判断しているところを削って,常に |> |"expression" を返すという変更が楽かと思います. | | これは,実行した結果を「偽かどうか判断しているところ」という意味 |で,1.8 の挙動にするのがいいのでは,ということでした. | ただ,今回の変更で defined? の挙動が簡単になったことも事実なので, |これでいいのだったらそれはそれで嬉しいです.このための特殊な処理も不 |要になりますし(ISEQ_TYPE_DEFINED_GUARD). もうちょっと様子を見て、誰からも文句がでないようならば、削っ ちゃっていいんじゃないでしょうか。 まつもと ゆきひろ /:|)