2

重複の可能性:
matlab で関数パラメーターの名前を取得するにはどうすればよいですか?

関数に渡される、または期待されるすべての引数を取得する方法を探しています。args() コマンドは理想的なようですが、プロシージャでのみ使用できます。とにかくこれを行うことはありますか。

これを行う理由は、より少ない行でチェックできるようにするためです。つまり、すべての入力が数値であることを確認するには、1 つのチェックを記述してからすべての引数に対して実行します。ですから、良い代替案があれば、私はアイデアを受け入れます。

ありがとう

4

2 に答える 2

3

vararginペトリコールが述べたように、を使用できます。vararginはセルであるため、次を使用して、すべてのパラメーターの検証を 1 行で簡単に実行できますcellfun

function c = test(varargin)
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), varargin);

上記のコードはvalidateattributes、すべての関数パラメーターに対して実行されます。一方、名前付き変数が必要な場合は、それらをセルにグループ化し、上記のように特定のテストを実行できます。

function c = test(i1, i2, d1, d2)

% validate integer arguments
cellfun(@(arg)validateattributes(arg, {'numeric'}, {'integer'}), {i1, i2});

% validate double arguments
cellfun(@(arg)validateattributes(arg, {'double'}, {'positive'}), {d1, d2});
于 2012-10-05T12:18:43.167 に答える
3

あなたが探しているのはvarargin、可変数の入力引数を操作できるようにすることです。

于 2012-10-05T11:54:29.760 に答える