你能在MATLAB类的默认值中嵌套匿名函数吗



在MATLAB中,似乎可以嵌套这样的匿名函数:

>> x = @() @() 1
x =
function_handle with value:
@()@()1

然而,在类属性的默认值中执行此操作时,我遇到了问题。例如,如果我定义了一个类

classdef MyClass
properties
Property1 = @() @() 1
end
end

然后构造一个实例,我得到了一个错误。

>> MyClass
Invalid default value for property 'Property1' in class 'MyClass':
Error: Invalid use of operator. 

这是怎么回事?有没有办法做到这一点?

(MATLAB R2019b(

编辑:这里有一个不会引发错误的有趣的解决方法:

classdef MyClass
properties
Property1 = someLocalFcn
end
end
function out = someLocalFcn
out = @() @() 1;
end

您可以考虑升级到MATLAB 2020a,您的代码可以正常工作:

>> x=MyClass
x = 
MyClass with properties:
Property1: @()@()1
>> y=x.Property1
y =
function_handle with value:
@()@()1
>> z=y()
z =
function_handle with value:
@()1
>> z()
ans =
1

最新更新