【发布时间】:2019-03-28 15:16:48
【问题描述】:
对于我的对象构造函数,我的第一个参数是一个值数组,对应于我的类属性的长度。我想遍历该输入数组并使用数组中的相应值初始化每个属性。
function obj = Waveform(required, options, varargin)
objProperties = reshape(properties(obj), [1, size(properties(obj))]);
for index = 1:size(required, 2)
set(obj, objProperties(:, index), required(:, index));
end
end
我知道循环可以工作,但我不知道如何或是否可以以上述方式初始化。
在当前状态下,程序返回以下错误:Cannot find 'set' method for Waveform class。
【问题讨论】:
-
你试过运行这个吗?它是否有效,还是会出错?
-
这确实返回一个错误:它说 matlab 找不到“波形类的设置方法”。
-
如果你从a class that implements them派生/继承,你的类默认只有
set/get方法。否则,您必须自己实现它们。 -
据我了解,只有在涉及自定义功能时才需要重载 set/get —— 我只是在尝试自动初始化每个属性,其功能类似于
obj.Property1 = Value1; -
这似乎是一种非常古怪的设置属性的方法。您不知道属性的顺序,特别是如果您想使用该类而无需阅读源代码,或者如果该类被修改?为什么名称-值对(一种在 MATLAB 中输入可选参数的成熟方法)不受欢迎?
标签: arrays matlab properties iteration