|
TAKA です。
> 前回のマクロの
> replaceup ".\\f.", "\\0@\\1", regular;
> while( result ) findup;
>の部分は,
> while( result ) replaceup ".\\f.", "\\0@\\1", regular;
>と書いてもいいですよね。
> 私はこれまでこういう書き方をしていましたが,何か区別はありますか。
マクロ講座になりそうですが、すぐに終わると思いますので、こち
らのフォーラムで引き続きレスをつけさせてもらいます。
厳密に言えば、だめです。
resultキーワードは、基本的には直前に行った命令の結果を返すこ
とになっています。
whileの直前に「result」の値が「false」になっている可能性があ
りますので、そのような場合に動作しません。
メンテとかで、whileの直前に命令を入れた場合などは、気をつけ
る必要があります。
絶対に「true」になっていると保証があるなら、問題はありません
が。
ちなみに、マクロ実行直後は、「true」になっていました。
以下のマクロで、厳密に言えば、だめなことを確認できます。
//-----------------------------------------
gofileend;
down; // ここで強引にfalseにさせる。(テスト用のゴミ)
while( result ) replaceup ".\\f.", "\\0@\\1", regular;
endmacro;
//-----------------------------------------
「down」出来ないので、「result」が「false」になり、置換され
ません。
では、変わりに
//-----------------------------------------
gofileend;
down; // ここで強引にfalseにさせる。(テスト用のゴミ)
replaceup ".\\f.", "\\0@\\1", regular;
while( result ) replaceup ".\\f.", "\\0@\\1", regular;
endmacro;
//-----------------------------------------
と書けば動くかというと、動きますが、検索条件を変更した時に、
修正個所が2行になってしまいます。
以上のような理由から、メンテの個所も少なく、コーディングも少
なく、見やすい(と私は思う)以下のようにしています。
//-----------------------------------------
gofileend;
down; // ここで強引にfalseにさせる。(テスト用のゴミ)
replaceup ".\\f.", "\\0@\\1", regular;
while( result ) findup;
endmacro;
//-----------------------------------------
もっと正確に書くなら、私のコーディング規約では
//-----------------------------------------
gofileend;
replaceup ".\\f.", "\\0@\\1", regular;
while( result )
{
findup;
}
endmacro;
//-----------------------------------------
のように行数は多くなってしまいます。(最初の書き込みの通り)
以上、私なりのマクロ講座でした。
|
|