まつもと ゆきひろです.
In message "[ruby-list:2052] Methods.htm 作成 tool"
on 97/02/04, (Dezawa Shin-ichiro) <dezawa / miya.fujifilm.co.jp> writes:
|
|[1 <text/plain; iso-2022-jp (7bit)>]
|出沢です
ちょっと機能アップしてますね.良いことだ.
しかし,
| { token[3] = "Enum" , mdl="incModule" } if token[3] == "Enumerable"
| { token[3] = "Compar", mdl="incModule" } if token[3] == "Comparable"
これはちょっとまずいですねえ.動作はするでしょうけど,こうい
うことができると思っちゃう人が出そうで.これは
条件が成立する時 { } の中を実行する
ようにみえますが,*違います*.これがやっていることは
条件が成立する時にHashを生成する
です.生成時に式の評価を行いますから結果的に { } の中を実行
しているだけです.問題は
* 無駄な連想配列が生成される
* 式は偶数個でないとエラーが出る
* 式しか置けない(文が置けない)
などです.こうことがやりたい場合は
( token[3] = "Enum" ; mdl="incModule" ) if token[3] == "Enumerable"
とか,
begin token[3] = "Enum" ; mdl="incModule" end if token[3] == "Enumerable"
とか
if token[3] == "Enumerable" then token[3] = "Enum" ; mdl="incModule" end
とかが良いでしょう.
まつもと ゆきひろ /:|)