どせいたんさき。

ナスダヨー

Octaveの関数で引数の数をチェックする

忘れやすいのでメモしておく.Octave のファンクション(mファイル)で引数の数をチェックする nargchk() 関数の(ちょっぴり)クールなつかいかた.この関数は次のような使い方をされる.

> msg = nargchk(n_min, n_max, nargs)
## n_min: 許される引数の最小値
## n_max: 許される引数の最大値
## nargs: 判定したい引数の数, nargin とか nargout とかを入れる
## msg  : 引数の数が範囲外のときに返されるメッセージ.問題なければ空の matrix が返る.

というわけでたぶんこんな感じに書くと便利.引数の数をチェックすると同時に msg に結果を代入.代入した結果が空の matrix ならば if 判定が false になるので else 節へ飛ぶ.そうでない場合は msg にしかるべきメッセージを代入, usage を表示して落ちる.

function retval = func(arg1, arg2, ...)
### usage: retval = func(arg1, arg2, ...)
### 
### This function hoge hoge...
  if ((msg = nargchk(min,max,nargin)))
    usage(["func(arg1, arg2, ...): ", msg]);
  else
    ## function body
  endif
endfunction