| 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ファイルの動き | 転送する引数の数を可変にする |