新井です。 In message "[ruby-list:38428] whenの評価の順序" on 25 Sep 2003 12:37:26 +0900, URA Takefumi <hage / power.email.ne.jp> wrote: > 浦です。 > 以下のような場合、'a'と印字されることが保証されているのかどうかというこ > とです。ふと気づいて、気になって仕方なくなりました。FAQなりリファレンス > マニュアルなりに記述がありそうなもんですが、なかったもので。 書きましょう。ただ、 | つまり、 | | case 式0 | when 式1, 式2 | stmt1 | when 式3, 式4 | stmt2 | else | stmt3 | end | | は以下の if 式とほぼ等価です。 | | _tmp = 式0 | if 式1 === _tmp or 式2 === _tmp | stmt1 | elsif 式3 === _tmp or 式4 === _tmp | stmt2 | else | stmt3 | end というのは暗に評価順序の事も示しているつもりでした。上記でいう「ほぼ」 とは _tmp という変数が導入されているところです。(_tmp を使うのは式0が 1回だけしか評価されない事を示しているつもり) 「when 節の評価順序はこの上記 if 文に書き直した場合と同じで す。つまり上から順に(そして左から順に) === が評価されます。 また式0は1回だけ評価されます」 とでも付け足しましょうかね・・・書きました。 メソッド呼出しの引数の評価順序も示されてなく、これだったか他 の何かだったかは予想外の動作だった気がしますが、とりあえず忘 れました(^^;。 -- 新井康司 (Koji Arai)