可変個の引数をとれなくてもいいじゃない
 別に引数の数を可変にしなくても、mov3~mov10命令みたいにすりゃいいんじゃね、と思った。省略したらデフォルトの値を使う、なんてやり方はできないけど。

 試しに、文字列用のmov3~mov10を作ることを考えてみる。たしか文字列でこれらの命令は使えなかったと思うので。考えるだけなので、実装してみたら問題が出るかもしれない。
 まず、増減する引数の、最大の個数を決定。とりあえずここでは10個。そしてその個数分の変数を命令用に確保する。10個なので、$0~$9まででいいだろう。
 そしてgetparamで値を受け取る。mov3ならgetparam s%0,$0,$1,$2、mov10ならgetparam s%0,$0,$1,...,$9ってところか。で、%1に引数の個数を代入するか、使わない変数(mov3なら$3~$9)をクリアするか、どちらかをしておく。
 そのあとメイン処理部分に飛ばす。ここはmov3~mov10の全命令において共通。for文で%1の回数分ループを回すか、ラベルとgotoでループをつくり、空文字("")だったらリターンするようにする。後者の場合、文字変数のクリアをリターン前にしてもいいかもしれない。

 こんな感じで、単に処理対象が増えるだけの命令ならメインの処理部分を使いまわしできそう。ラベルとgetparamの部分はNScripterを利用して作成できると思う。
[PR]
by lyricist_m | 2007-05-15 22:48 | NScripter
<< maxkaisoupage命令の挙動 seteffectspeed命... >>