arguments
関数の引数の検証を宣言
構文
arguments
argName1 (dimensions) class {validators} = defaultValue
...
argNameN ...
end
arguments (Repeating)
argName1 (dimensions) class {validators}
...
argNameN ...
end
arguments (Output)
argName1 (dimensions) class {validators}
...
argNameN ...
end
arguments (Output,Repeating)
argName (dimensions) class {validators}
end
説明
入力引数ブロック
arguments ... end は、関数の入力引数を宣言します。arguments ブロックはオプションです。1 つ以上の arguments ブロックを含める場合は、関数の最初の実行可能行の前になければなりません。MATLAB® は、Input または Output による明示的なラベリングがされていない任意の引数ブロックを入力ブロックとして扱います。
各引数には、次の構文に示すように 1 つ以上の制限または既定値を指定できます。
argName (dimensions) class {validators} = defaultValue
— 入力サイズ。(dimensions)(1,2)、(3,5,2)、(1,:)など、2 つ以上の数値のコンマ区切りリストとして指定します。コロンを使用すると、その次元で任意の長さが許可されます。に式を含めることはできません。(dimensions)入力の次元は、
と完全に一致するか、(dimensions)で指定されたサイズと "互換" しなければなりません。たとえば、(dimensions)(1,:)は、入力が 1 行 n 列の行ベクトルでなければならないことを指定しますが、n 行 1 列の列ベクトルが互換します。この関数は、行ベクトル入力を列ベクトルに変更します。同様に、(2,3)のサイズではスカラー入力が許可されますが、入力は 2 行 3 列の行列に展開されます。詳細については、サイズおよびクラスの検証を参照してください。— クラスまたは MATLAB データ型。classdoubleなどの名前として指定します。入力は指定された型、またはその型に変換できる型でなければなりません。たとえば、doubleを指定する関数はクラスsingleの値を受け入れて、それらの値をdoubleに変換します。変換の詳細については、暗黙的なクラス変換を参照してください。— 中かっこで囲まれた{validators}mustBeNumericやmustBeScalarOrEmptyなどの検証関数のコンマ区切りのリスト。検証関数は、入力引数がその条件と一致しない場合エラーになります。と異なり、検証関数は入力引数を変更しません。検証関数の一覧については、引数の検証関数を参照してください。class— 既定値は、指定されたサイズ、型、および検証ルールと一致しなければなりません。既定値は式にすることもできます。既定値を指定すると、引数はオプションになります。オプションの引数は、関数シグネチャとdefaultValueargumentsブロック内で必須の引数の後に配置しなければなりません。
名前と値の引数では、 は arg 形式を使用します。ここで、nv.name は関数シグネチャの構造体名で、nv は arguments ブロックの引数名です。たとえば、nameoptions という名前の構造体を使用して、名前と値の引数を受け入れる関数を定義します。
y = myFunction(x,options)
arguments ブロックで、次のように、名前と値の引数の名前をフィールドとして指定します。
arguments
x
options.Name1
options.Name2
end 一般的な arguments ブロックの使用方法の詳細については、arguments ブロック構文を参照してください。
arguments (Repeating) ... end は繰り返し入力引数を宣言します。
たとえば、繰り返し引数 X、Y、および style を使用して myplot という名前の関数を作成すると、myplot(x1,y1,style1,x2,y2,style2) のように、これら 3 つの引数の複数のセットが受け入れられます。MATLAB では、その引数で渡されるすべての値を含む cell 配列が作成されます。
関数には、1 つの repeating input arguments ブロックのみを含めることができます。関数に繰り返し引数および名前と値の引数をどちらも含める場合は、名前と値の引数を独自に宣言し、repeating arguments ブロックの後に arguments ブロックを分けます。
繰り返し引数での検証の使用の詳細については、繰り返し引数の検証を参照してください。
出力引数ブロック
arguments (Output) ... end は、関数の出力引数を宣言します。output arguments ブロックはオプションです。1 つ以上の出力 arguments ブロックを含める場合は、すべての入力ブロックの後、かつ関数の最初の実行可能行の前になければなりません。入力ブロックと出力ブロックの両方を関数に含める場合は、読みやすくするため、(Input) および (Output) 属性を明示的に含めることを推奨します。例については、引数の検証を使用する繰り返し出力を参照してください。(R2022b 以降)
入力引数と同様、出力引数には、次の構文に示すように 1 つ以上の制限を指定できます。
argName (dimensions) class {validators}
詳細は、arguments ... end の説明を参照してください。入力引数とは異なり、出力引数には既定値を定義できません。また、ある出力引数に適用された検証関数は、それより前の出力引数を参照できません。
arguments (Output,Repeating) ... end は、関数の繰り返し出力引数を宣言します。繰り返し出力引数に対する引数の検証を使用できますが、関数ごとに定義できる繰り返し出力引数は 1 つのみです。varargout は、それが唯一の出力引数であれば、repeating output arguments ブロックで使用できます。(R2022b 以降)
例
制限
引数ブロックは入れ子関数、抽象メソッド、またはハンドル クラスのデストラクター メソッドではサポートされません。
詳細
ヒント
データ型制限を使用すると、入力引数の暗黙の変換が行われます。以下に例を示します。
この関数では、stringfunction y = myFunction(inputArg1) arguments inputArg1 (1,1) double end ..."123"を入力引数として渡すと、MATLAB で string がdouble型の数値123に変換されます。検証関数では入力値は変更されないため、データ型の変換を回避するには、入力を制限するデータ型ではなく、1 つ以上の検証関数を使用します。以下に例を示します。
string から数値への変換を回避するには、
mustBeA、mustBeFloat、またはmustBeNumericを使用します。数値から string への変換を回避するには、
mustBeText、mustBeTextScalar、またはmustBeNonZeroLengthTextを使用します。サイズ変換を回避するには、
mustBeVectorまたはmustBeScalarOrEmptyを使用します。
MATLAB では、
argumentsブロックを含む関数のコードの補完と候補を、arguments ブロックに含まれている情報に基づいて提供できます。この情報は、functionSignatures.jsonファイルがなくても使用できます。コードの候補と補完のカスタマイズの詳細については、コードの候補と補完のカスタマイズを参照してください。


