匿名函数是否支持可选参数?

时间:2020-02-13 00:37:13

标签: matlab anonymous-function optional-parameters

有没有一种方法可以在MATLAB实现的匿名函数中使用可选参数?

请参见以下示例:

foo = @(x,y)(x+y+12)

y是否可以是上述匿名函数中的可选参数,例如

foo = @(x,y?)(x+y+12)

并且仅在提供时使用y

1 个答案:

答案 0 :(得分:5)

MATLAB中有一个称为“可变长度输入参数列表”的概念,请参见varargin。通常,可以在匿名函数中使用它,尤其是在您的示例中:

foo = @(varargin) sum(cell2mat(varargin)) + 12;

foo(10)           % 10 + 12
foo(10, 20)       % 10 + 20 + 12
foo(10, 20, 30)   % 10 + 20 + 30 + 12
ans =  22
ans =  42
ans =  72

varargin是一个单元格数组,因此我们需要将其转换为常规(数字)数组。然后,我们只需要对这些值求和并加12。

当然,仅当所有传递的参数均为某种数字类型时,该解决方案才有效。

希望有帮助!