您可以在 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