您可以在 MATLAB 类 的默认值中嵌套匿名函数吗?
Can you nest anonymous functions in default values for MATLAB classes?
在 MATLAB 中,您似乎可以像这样嵌套匿名函数:
>> x = @() @() 1
x =
function_handle with value:
@()@()1
我 运行 遇到了问题,但是,在 class 属性的默认值下执行此操作时。例如,如果我定义一个 class
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
在 MATLAB 中,您似乎可以像这样嵌套匿名函数:
>> x = @() @() 1
x =
function_handle with value:
@()@()1
我 运行 遇到了问题,但是,在 class 属性的默认值下执行此操作时。例如,如果我定义一个 class
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