MATLAB - Зависимые свойства и расчет - PullRequest
8 голосов
/ 11 ноября 2011

Предположим, у меня есть следующий класс, который вычисляет решение для квадратного уравнения:

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

1 Ответ

6 голосов
/ 12 ноября 2011

Да, x пересчитывается каждый раз. Это своего рода наличие зависимого свойства, поскольку оно гарантирует, что результат в x всегда актуален.

Если вы хотите сделать x «зависимым от лени» свойством, вы можете посмотреть предложения в моем ответе на этот вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...