2011-11-11 47 views
8

假设我有下面的类,它计算的解决二次方程:MATLAB - 相关性和计算

classdef MyClass < handle 
    properties 
     a 
     b 
     c 
    end 
    properties (Dependent = true) 
     x 
    end 

    methods 
     function x = get.x(obj) 
      discriminant = sqrt(obj.b^2 - 4*obj.a*obj.c); 
      x(1) = (-obj.b + discriminant)/(2*obj.a); 
      x(2) = (-obj.b - discriminant)/(2*obj.a); 
     end 
    end 
end 

现在假设我运行下面的命令:

>>quadcalc = MyClass; 
>>quadcalc.a = 1; 
>>quadcalc.b = 4; 
>>quadcalc.c = 4; 

在这一点上, quadcalc.x = [-2 -2]。假设我多次拨打quadcalc.x而不需要调整其他属性,即每次请求此属性时需要quadcalc.x = [-2 -2]。是quadcalc.x重新计算每一次,还是只是“记住”[-2 -2]?

回答

6

是的,x每重新计算一次。这是具有从属性的一点,因为它保证x中的结果始终保持最新。

如果您想让x成为“懒惰依赖属性”,您可能需要查看我对this question的回答中的建议。

+1

假设我在其他依赖属性中使用了'x';对于其他所有属性,“x”也会重新计算,是的? –

+0

@ strictrude27:是的。 – Jonas