MATLAB - 依赖属性和计算

Dan*_*hoa 8 oop 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
Run Code Online (Sandbox Code Playgroud)

现在假设我运行以下命令:

>>quadcalc = MyClass;
>>quadcalc.a = 1;
>>quadcalc.b = 4;
>>quadcalc.c = 4; 
Run Code Online (Sandbox Code Playgroud)

此时,quadcalc.x = [-2 -2].假设我quadcalc.x多次调用而不调整其他属性,即quadcalc.x = [-2 -2]每次我要求这个属性.被quadcalc.x 重新计算每一次,还是会只是"记住" [-2 -2]

Jon*_*nas 6

是的,x每次重新计算.这是具有依赖属性的一点,因为它保证结果x始终是最新的.

如果你想制作x一个"懒惰的依赖属性",你可能想看看我对这个问题的答案中的建议.