Nat*_*ons 3 scripting matlab variadic-functions
我有一个带有变量参数的函数,以标准方式声明:
[] = foo ( varargin )
Run Code Online (Sandbox Code Playgroud)
我想从另一个函数调用它,但以编程方式指定参数.我最好的尝试类似于以下内容:
% bar isn't populated like this, but this is how it ends up
bar = { 'var1' 'var2' 'var3' };
foo( bar );
Run Code Online (Sandbox Code Playgroud)
但是,bar被放入1x1单元阵列中,并不像我预期的那样被解释为1x3单元阵列.我无法改变foo,所以有解决方法吗?
gno*_*ice 10
如果您有变量a,b并且c想要在某处收集并最终作为一系列输入传递给函数,则可以执行以下操作:
inArgs = {a b c}; % Put values in a cell array
foo(inArgs{:});
Run Code Online (Sandbox Code Playgroud)
语法inArgs{:}将单元格数组中的所有值提取为逗号分隔列表.因此,上述内容相当于:
foo(a,b,c);
Run Code Online (Sandbox Code Playgroud)
如果foo写入接受可变长度参数列表,则该varargin变量将最终成为1乘3单元格数组,其中每个元素存储单独的输入参数.基本上,varargin看起来正是像变量inArgs.如果您的电话foo没有使用{:}运营商:
foo(inArgs);
Run Code Online (Sandbox Code Playgroud)
然后varargin变量将是1乘1的单元阵列,其中第一个元素本身就是单元阵列inArgs.换句话说,foo只有1个输入(一个1乘3的单元阵列).
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |