[要望]マクロ ##returnのデフォルト値No.15667
IKKI さん 03/11/06 11:10
 
IKKI です。

マクロの call 文を呼んだとき、 ##return と $$return を毎回必ずリセットするよ
うにしていただけませんか。
以下の例のように、前回の返り値によって今回の返り値(のデフォルト値)が変わっ
てしまうというのは、非常に見つけにくいバグの原因となります。 C 言語と違って
そういう細かいところを気にしなくていいのが秀丸マクロの長所だと思っていました。
よろしくご検討ください。


call Sub0;  message str(##return);  //=> 0
call Sub1;  message str(##return);  //=> 1
call Sub0;  message str(##return);  //=> 1 ??
endmacro;

Sub0:
  return;

Sub1:
  return 1;

[ ]
RE:15667 [要望]マクロ ##returnのデフNo.15668
たけのこ さん 03/11/06 12:00
 
一般ユーザのたけのこです。

>マクロの call 文を呼んだとき、 ##return と $$return を毎回必ずリセットするよ
>うにしていただけませんか。

> 前回の返り値によって今回の返り値(のデフォルト値)が変わっ
> てしまうというのは、非常に見つけにくいバグの原因となります。

と、云うことなのであれば、デフォルト値(≒リセット値)がいかに設定されよ
うとも、見付けにくいこと(戻り値のないサブルーチンの戻り値を参照している
バグ)に代わりはないのではないでしょうか?
デフォルト値になるというよりも、戻り値のないサブルーチンからの戻り値を参
照した場合はエラートラップしちゃってもいいような気もしますが。

いずれにせよ、互換性云々の話が出そうですが、2つ(以上)前のサブルーチン
の戻り値をそのまま(別の変数に代入もせずに)使用しているようなPGは、その
作りから云って信用出来ません。実行と実行結果はアトミックであるべきでしょ
う。

(^^)/”

[ ]
RE:15668 [要望]マクロ ##returnのデフNo.15675
秀丸担当 さん 03/11/06 17:19
 

>>マクロの call 文を呼んだとき、 ##return と $$return を毎回必ずリセットするよ
>>うにしていただけませんか。

互換性の面から、これを下手にいじると以前動いていたマクロが動かなくなった
ということになりかねないので、やめておきます。

[ ]
RE:15675 [要望]マクロ ##returnのデフNo.15686
IKKI さん 03/11/07 03:17
 
IKKI です。

> >>マクロの call 文を呼んだとき、 ##return と $$return を毎回必ずリセットす
>るよ
> >>うにしていただけませんか。
>
> 互換性の面から、これを下手にいじると以前動いていたマクロが動かなくなった
> ということになりかねないので、やめておきます。

わかりました。厳密なコーディングを心がけます。

[ ]