last updated:2023/12/27

←前へ 次へ→
機能別Q&A 質問番号順Q&A


[HMM0025A]

●サブルーチンからの戻り値(複数の戻り値)

Q.
戻り値がひとつしか使えないのでは不便です。

A.

グローバル変数をサブルーチン側で用いることで対応できます。

//------- サンプルマクロ -------//
$a="123";
$b="456";
call calcStrToNum $a,$b;
message "和="+str(#wa)+"差="+str(#sa);
endmacro;

calcStrToNum:
    $$s1=$$1;
    $$s2=$$2;
    #wa=val($$s1)+val($$s2);
    #sa=val($$s1)-val($$s2);
return;
// ---------------------------- //

一見、return文で何も返していないようですが、#wa,#saでグローバル変数を使用しているので、これらの変数は元のルーチンでも参照できます。こうした「グローバル変数を用いた戻り値」では、実質的に複数の戻り値を返せます。これらは一般的なプログラミングにおける変数の有効範囲における留意点とほぼ同様です。

refcall は call と同様にサブルーチンを呼び出します(秀丸エディタ Ver.9.12以降)。 refcall は 引数に指定した変数の内容をサブルーチン内で変更可能なので、この機能を使えば複数の戻り値を取得できます。

詳細は、「第III部〜秀丸マクロのいろはにほへと サブルーチンについて」 を参照。


←前へ 次へ→
機能別Q&A 質問番号順Q&A