假设我有下面的类来计算二次方程的解:

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]?

最佳答案

是的,x每次都会重新计算。这是具有依赖属性的意义,因为它可以保证x中的结果始终是最新的。

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

10-06 07:04