Если у вас есть переменные a
, b
и c
, которые вы хотите где-то собрать и в конечном итоге передать функции в виде последовательности входных данных, вы можете сделать следующее:
inArgs = {a b c}; % Put values in a cell array
foo(inArgs{:});
Синтаксис inArgs{:}
извлекает все значения из массива ячеек в виде списка, разделенного запятыми . Поэтому вышесказанное эквивалентно этому:
foo(a,b,c);
Если записано foo
для приема списка аргументов переменной длины , то переменная varargin
в конечном итоге станет массивом ячейки 1 на 3, где каждый элемент хранит отдельный входной аргумент , По сути, varargin
будет выглядеть точно как переменная inArgs
. Если при вашем звонке на foo
оператор {:}
не использовался:
foo(inArgs);
тогда переменная varargin
будет массивом ячеек 1 на 1, где первым элементом является сам массив ячеек inArgs
. Другими словами, foo
будет иметь только 1 вход (массив ячеек 1 на 3).