我正在尝试将我的C#代码转换为Matlab,在Matlab中我决定使用OOP(我没有使用过Matlab)来处理我的C#代码的复杂性。
查看tutorial,我想出了以下代码:
classdef Cat
properties
meowCount = 0;
end
methods
function Meow(C)
disp('meowww');
C.meowCount = C.meowCount + 1;
end
end
end
结果:
>> c = Cat();
>> c.Meow();
meowww
>> c
c =
Cat
Properties:
meowCount: 0
Methods
因此,meowCount
不会改变。有什么问题?
答案 0 :(得分:7)
我发现了一些问题:
handle
基类构造函数不是绝对必要的,但是当你真正想要开始开发更大的类时,它非常有用。它用于初始化obj
对象,该对象被传递给每个方法。它与Python的self
或C ++的this
非常相似。
所以,你纠正的课程:
classdef Cat < handle
properties
meowCount = 0;
end
methods
function obj = Cat()
% all initializations, calls to base class, etc. here,
end
function Meow(obj)
disp('meowww');
obj.meowCount = obj.meowCount + 1;
end
end
end
示范:
>> C = Cat;
>> C.Meow;
meowww
>> C.meowCount
1