Matlab类方法错误



我是matlab类的新手,刚刚完成了几个教程,现在正在尝试制作一个。然而,在我的方法部分,我遇到了问题。对象应该只需要一条信息来构造剩余的属性,我将把这些属性作为输入传递给构造函数。然后我想我应该能够在方法部分再调用两个函数来填充剩余的属性。。。请参阅下面的伪代码。。。

methods
    function obj=myConstructor(input)
        obj.property1=input;
        getProperty2(obj);
        getProperty3(obj);
    end
    function getProperty2(obj)
        obj.property2 = do something and save in property2...
    end
    function getProperty3(obj)
        obj.property3 = do something and save in property3...
    end
end

然而,当我尝试运行此操作时,属性2或3都没有分配。。。只有我传递给构造函数的值。如有任何关于如何完成初始化的帮助/想法,我们将不胜感激。谢谢

首先,get方法通常用于检索(即获取)对象属性的值。不是为了计算什么。

其次,MATLAB对象模型有两种不同的类型:值对象和句柄对象。区别很重要,但由于您没有提到任何区别,我假设您使用的是值对象。句柄对象的行为完全不同。

与Java和大多数其他语言相比,您需要返回更改后的对象。因此,在MATLAB中,这将类似于:

classdef MyClass
    properties
        p1, p2, p3;
    end
    methods
       function obj = MyClass(input)
          obj.p1 = input;
          obj = obj.calculateP2(input);
          obj = obj.calculateP3(input);
       end
       function obj = calculateP2(obj, input)
          obj.p2 = someLengthyCalculation(input);
       end
       function obj = calculateP3(obj, input)
          obj.p3 = someOtherLengthyCalculation(input);
       end
    end
end

这可以变得更干净,因为calculateP?方法很可能更适合作为私有静态方法。这完全取决于您希望传递给这些方法的量。

相关内容

最新更新