Main Content

addOptional

入力パーサー スキームにオプションの位置引数を追加

説明

addOptional(p,argName,defaultVal) はオプションの位置引数の入力引数 argName を入力パーサー スキーム p に追加します。関数の入力にこのオプションの入力値が含まれない場合、入力パーサーはそれに値 defaultVal を割り当てます。

addOptional(p,argName,defaultVal,validationFcn) は入力引数の検証関数を指定します。

すべて折りたたむ

inputParser オブジェクトを作成し、入力パーサー スキームにオプション入力を追加します。引数 myinput に名前を付け、既定値 13 を割り当てます。

p = inputParser;
argName = 'myInput';
defaultVal = 13;
addOptional(p,argName,defaultVal)

入力を指定せずに関数 parse を呼び出し、その結果を表示します。

parse(p)
p.Results
ans = struct with fields:
    myInput: 13

入力値 42 を指定して関数 parse を呼び出し、その結果を表示します。

parse(p,42)
p.Results
ans = struct with fields:
    myInput: 42

既定値 1 をもつ num という名前のオプション入力が、ゼロより大きい数値スカラーであることを検証します。

入力パーサー スキームを作成します。その検証関数について、@(x) は 1 つの入力を受け入れる無名関数のハンドルを作成します。

p = inputParser;
argName = 'num';
defaultVal = 1;
validationFcn = @(x) isnumeric(x) && isscalar(x) && (x > 0);
addOptional(p,argName,defaultVal,validationFcn)

-1 などの無効な入力引数を解析します。

parse(p,-1)
The value of 'num' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isscalar(x)&&(x>0).

validateattributes を使用して、検証関数を定義します。引数が正の偶数値であることを検証します。

validationFcn = @(x) validateattributes(x,{'numeric'},...
    {'even','positive'});

オプション引数 evenPosNum と既定値 1 を含む入力パーサー スキームを作成します。その入力引数を validationFcn で検証します。

p = inputParser;
argName = 'evenPosNum';
defaultVal = 1;
addOptional(p,argName,defaultVal,validationFcn)

入力 string を解析します。解析は失敗します。

parse(p,"hello")
The value of 'evenPosNum' is invalid. Expected input to be one of these types:

numeric

Instead its type was string.

奇数を解析します。解析は失敗します。

 parse(p,13)
The value of 'evenPosNum' is invalid. Expected input to be even.

偶数の正の数値を解析します。解析はパスします。

parse(p,42)

入力引数

すべて折りたたむ

入力パーサー スキーム。inputParser オブジェクトとして指定します。

入力引数の名前。文字ベクトルまたは string スカラーとして指定します。

例: 'firstName'

例: 'address'

データ型: char | string

入力の既定値。任意のデータ型で指定します。argName が関数への入力ではない場合、関数 parse は入力を解析するときに、argName に値 defaultVal を割り当てます。

引数を検証する関数。関数ハンドルとして指定します。

関数ハンドルは、true または false を返す、テストをパスする、あるいはエラーをスローする、のいずれかを行う関数に関連付けなければなりません。いずれのタイプの関数も、単一の入力引数を受け入れなければなりません。

例: @(s)isstring(s)

例: @(x)isnumeric(x)&&isscalar(x)

例: @(n)validateattributes(n,{'numeric'},{'nonnegative'})

データ型: function_handle

ヒント

  • 関数 addOptional で入力パーサー スキームに追加された引数は位置引数です。このため、関数に渡されるときと同じ順序でこれらを入力パーサー スキームに追加します。

  • オプションの string 引数の場合は、検証関数を指定します。検証関数がない場合、入力パーサーは string 引数を無効なパラメーター名として解釈し、エラーをスローします。

  • 入力パーサー スキームに個々の引数を追加するには、addOptional を使用します。オプションの名前と値のペアを解析する場合は、関数 addParameter を使用します。

バージョン履歴

R2007a で導入