12

可変数の引数を受け入れる無名関数を作成できますか?

S特定のフィールド、たとえば、を持つ構造体配列があり、すべての値を無名関数barに渡したいです。構造体の要素数は不明であるため、可変数の引数を受け入れることができなければなりません。barfooSfoo

私が思いついた最も近いことは、入力引数リストとしてセル配列を渡すことです。

foo({arg1, arg2, arg3, ...})

で呼び出していfoo({S.bar})ますが、非常に扱いにくいように見えます。

そのためだけに特別なmファイルを作成するのはやり過ぎのようです。他のアイデアはありますか?

4

2 に答える 2

10

varargin無名関数の引数として使用すると、可変数の入力を渡すことができます。

例えば:

foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))

使用法

s(1:4) = struct('bar',1);
foo(s.bar)

you provided 4 arguments
于 2013-01-30T21:59:49.257 に答える
0

varargin は、関数が任意の数の入力引数を受け入れることを可能にする関数定義ステートメントの入力変数です。

function varlist(varargin)
   fprintf('Number of arguments: %d\n',nargin);
   celldisp(varargin)

varlist(ones(3),'some text',pi)


Number of arguments: 3

varargin{1} =
     1     1     1
     1     1     1
     1     1     1

varargin{2} =
some text

varargin{3} =
    3.1416
于 2013-01-30T21:59:34.090 に答える