我是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?
方法很可能更适合作为私有静态方法。这完全取决于您希望传递给这些方法的量。