在 class 的实例中,按事件自动更改值
Automatic change values, in instance of class, by event
我想创建一个 class,当我在 class 的实例中更改输入参数时,它(为简单起见)添加两个数字。为简单起见,我创建了这个 class:
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
sum;
end
methods
function obj = test()
obj.sum = method1(obj);
end
function obj = method1(obj)
obj.sum = obj.brugerNummer + obj.privatNummer;
end
end
end
如何让它在我给它一个新值时自动更新 obj.sum?目前,每次我想更新 obj.sum 时,我都必须 运行 obj.method1。
我已经尝试过类似的方法(但我无法让它工作):
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
sum;
end
methods
function obj = test()
notify(obj,'StateChange')
obj.sum = method1(obj);
addlistener(obj.brugerNummer,'Ændret nummer',@RespondToToggle.method1);
end
function src = method1(src)
src.sum = src.brugerNummer + src.privatNummer;
end
end
events
StateChange
end
end
我针对这些问题开发了两种解决方案。第一种依赖Dependent
properties
、setters和getters;第二个依赖于监听器和回调函数。
第一个解决方案:
classdef test
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
end
properties (Dependent)
sum;
end
methods
function obj = test()
% Constructor
end
function value = get.sum(obj)
value = obj.brugerNummer + obj.privatNummer;
end
end
end
第二种解决方案(这真的很麻烦):
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties (SetObservable)
brugerNumber;
end
properties
sum;
end
methods
function obj = test()
% constructor
addlistener(obj, 'brugerNumber', 'PostSet',@test.callbackFun);
end
end
methods (Static)
function callbackFun(~,evnt)
obj = evnt.AffectedObject;
obj.sum = obj.brugerNumber + obj.privatNummer;
end
end
end
我想创建一个 class,当我在 class 的实例中更改输入参数时,它(为简单起见)添加两个数字。为简单起见,我创建了这个 class:
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
sum;
end
methods
function obj = test()
obj.sum = method1(obj);
end
function obj = method1(obj)
obj.sum = obj.brugerNummer + obj.privatNummer;
end
end
end
如何让它在我给它一个新值时自动更新 obj.sum?目前,每次我想更新 obj.sum 时,我都必须 运行 obj.method1。
我已经尝试过类似的方法(但我无法让它工作):
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
sum;
end
methods
function obj = test()
notify(obj,'StateChange')
obj.sum = method1(obj);
addlistener(obj.brugerNummer,'Ændret nummer',@RespondToToggle.method1);
end
function src = method1(src)
src.sum = src.brugerNummer + src.privatNummer;
end
end
events
StateChange
end
end
我针对这些问题开发了两种解决方案。第一种依赖Dependent
properties
、setters和getters;第二个依赖于监听器和回调函数。
第一个解决方案:
classdef test
properties (Constant)
privatNummer = 10;
end
properties
brugerNummer;
end
properties (Dependent)
sum;
end
methods
function obj = test()
% Constructor
end
function value = get.sum(obj)
value = obj.brugerNummer + obj.privatNummer;
end
end
end
第二种解决方案(这真的很麻烦):
classdef test < handle
properties (Constant)
privatNummer = 10;
end
properties (SetObservable)
brugerNumber;
end
properties
sum;
end
methods
function obj = test()
% constructor
addlistener(obj, 'brugerNumber', 'PostSet',@test.callbackFun);
end
end
methods (Static)
function callbackFun(~,evnt)
obj = evnt.AffectedObject;
obj.sum = obj.brugerNumber + obj.privatNummer;
end
end
end