我对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
,就会出现。
实现这一目标的最佳方法是什么?我猜一个可选参数不是真正的属性吗?
答案 0 :(得分:1)
如果您需要可选属性,则可以从dynamicprops
继承您的类。然后,您可以使用命令addprop
动态添加属性,使用isprop
测试属性是否存在,甚至通过侦听事件PropertyAdded
和{来响应要添加或删除的属性{1}}。
在您的示例中,您将使用:
PropertyRemoved