function abc= calculate(obj)
ag=obj.turns*d/c;
end
我尝试使用:
temp=num2cell(obj.turns)
s=temp{:}
但每次都会更换价值。
如何在此函数中存储obj.turns的值?每次调用函数时,值都会更改。
答案 0 :(得分:4)
如果我正确理解你想要的东西,你应该使用persistent variable。这是一个例子:
function abc = calculate(obj)
persistent storedTurns;
if isempty(storedTurns)
storedTurns = obj.turns;
end
ag = storedTurns*d/c;
...
end
第一次拨打calculate
时,obj.turns
中的值将被放入storedTurns
。每次调用calculate
时,该值都将保持不变,从而忽略了传入的变量obj
中可能存在的任何新值。
答案 1 :(得分:0)
对于一个持久变量(存在于函数范围之外的变量),就像你需要的变量一样,你需要创建另一个类属性来保存它,或者更新现有对象,如本例所示。
function obj = increment_x(obj)
obj.x=obj.x+1;
end
这是一个增加x值的简单函数。重要的细节是函数也返回对象。
或者,您可以使您的类成为句柄类的子类。然后在适当的位置修改对象属性,这样您就可以使用以下内容。 。 。
function increment_x(obj)
obj.x=obj.x+1;
end
答案 2 :(得分:0)
有一些事情可以做。
将所有变量传入函数(首选方法)。
function ag= calculate(obj,d,c)
ag=obj.turns*d/c;
end
使用全局变量。这可能非常令人困惑,所以不建议这样做。
function calculate(obj)
global ag,d,c
ag=obj.turns*d/c;
end
以及其他一些代码:
function start
global ag,d,c
c=1;d=3;
calculate(obj)
fprintf('%i',ag);