在MATLAB类中使用“可选”属性

时间:2017-09-28 14:10:32

标签: matlab oop optional-parameters

我对MATLAB中的类有疑问。

我正在编写一个解析器,它并不总是具有相同的输入。某些变量始终未定义。这是一个简短的模拟脚本:

test_parser.m

classdef test_parser < matlab.mixin.Copyable
    properties (AbortSet = true)
        a
        b        
    end
end

make_class.m

function result = make_class(array)
    result = test_parser;
    result.a = array(1);
    if length(array)>1
        result.b=array(2);
    end
end

现在从命令窗口调用不同的输入长度:

>> make_class([10])
ans =     
  test_parser with properties:    
    a: 10
    b: []

>> make_class([10,20])        
ans =     
  test_parser with properties:    
    a: 10
    b: 20

在两种情况下,变量b都是test_parser的属性,如指定的那样。我的愿望是b是可选的,所以如果输入中有b,就会出现。

实现这一目标的最佳方法是什么?我猜一个可选参数不是真正的属性吗?

1 个答案:

答案 0 :(得分:1)

如果您需要可选属性,则可以从dynamicprops继承您的类。然后,您可以使用命令addprop动态添加属性,使用isprop测试属性是否存在,甚至通过侦听事件PropertyAdded和{来响应要添加或删除的属性{1}}。

在您的示例中,您将使用:

PropertyRemoved