Если в вашем классе не реализован метод set
, вы не можете использовать set(obj, ...)
для достижения этой цели. По умолчанию у вас будут методы set/get
, только если ваш класс наследует / наследует от встроенный класс, который их реализует .
Если вы не хотите наследовать от одного из этих классов или реализовать методы set/get
самостоятельно, вы можете использовать динамическое поле со ссылкой для достижения этой цели. Вот пример класса:
classdef Waveform
properties
a
b
c
end
methods
function obj = Waveform(required)
objProperties = properties(obj);
for index = 1:numel(required)
obj.(objProperties{index}) = required(index);
end
end
end
end
И вы можете создавать новые объекты следующим образом:
>> obj = Waveform([1 2 3])
obj =
Waveform with properties:
a: 1
b: 2
c: 3
>> obj = Waveform([1 2]) % Only pass 2 values...
obj =
Waveform with properties:
a: 1
b: 2
c: [] % ...and the third property is not initialized
Однако , это выглядит как очень хрупкий подход, который будет трудно поддерживать и может легко сломаться, если вы когда-нибудь измените свой класс, добавив или удалив свойства. Я бы предложил передать значения свойств в ваш конструктор в качестве отдельных аргументов или, возможно, использовать методы проверки ввода .