基本MATLAB类方法[复制](Basic matlab class method [duplica

2019-07-31 03:53发布

可能重复:
如何修改Matlab的对象的属性

我想将我的C#代码到Matlab,在Matlab我决定使用OOP,我还没有被使用的Matlab,能够与我的C#代码的复杂性来处理。

展望教程 ,我想出了下面的代码:

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不会改变。 问题是什么?

Answer 1:

有几个问题,我注意到:

  • 你有没有构造
  • 你不从派生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


文章来源: Basic matlab class method [duplicate]
标签: class matlab