Programming and Data Types | ![]() ![]() |
Function引数の数のチェック
nargin
とnargout
関数は、Functionが呼ばれたとき、入力引数の数と出力引数の数を数えるものです。引数の数によって、処理が変化するように条件付きのステートメントを作ることができます。例えば、
function c = testarg1(a,b) if (nargin == 1) c = a.^2; elseif (nargin == 2) c = a + b; end
は、入力引数が1つならば引数の二乗を計算し、入力引数が2つならば、引数の和を計算します。
つぎに、もう少し進んだ例を示します。これは、キャラクタ文字に中に存在するトークンの最初のものを探索するものです。トークンは、スペースまたは他のキャラクタで、キャラクタ集合を分離するものです。入力引数が1つの場合、関数はデフォルトの分離子スペースを仮定しています。入力引数が2つで、ユーザが希望する場合、他の分離子を設定するものです。出力引数も2つ設定することができます。
function [token,remainder] = strtok(string,delimiters) % Functionは、少なくとも1つの入力引数が必要 if nargin < 1, error('Not enough input arguments.'); end token = []; remainder = []; len = length(string); if len == 0 return end % 入力が1つの場合、スペ ース分離子を使用 if (nargin == 1) delimiters = [9:13 32]; % White space characters end i = 1; % 分離子でないキャラクタの始まりを決定 while (any(string(i) == delimiters)) i = i + 1; if (i > len), return, end end % トークンの最後の探索 start = i; while (~any(string(i) == delimiters)) i = i + 1; if (i > len), break, end end finish = i - 1; token = string(start:finish); % 2出力引数に対して、最初の分離子の後に続く % キャラクタをカウント if (nargout == 2) remainder = string(finish + 1:end); end
関数strtok
は、strfun
ディレクトリの中のMATLAB
M-ファイルです。
![]() |
Functionファイルの動き | 転送する引数の数を可変にする | ![]() |