在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