2011-11-11 39 views
8

Giả sử tôi có lớp sau đó tính toán các giải pháp cho phương trình bậc hai:MATLAB - tính chất phụ thuộc và tính toán

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 

Bây giờ giả sử tôi chạy các lệnh sau:

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

Tại thời điểm này, quadcalc.x = [-2 -2]. Giả sử tôi gọi quadcalc.x nhiều lần mà không điều chỉnh các thuộc tính khác, tức là, quadcalc.x = [-2 -2] mỗi lần tôi yêu cầu thuộc tính này. Có phải quadcalc.xđược tính toán lại mỗi lần duy nhất hay nó chỉ "ghi nhớ" [-2 -2]?

Trả lời

6

Có, x được tính toán lại mỗi lần. Đây là loại điểm có thuộc tính phụ thuộc, vì nó đảm bảo rằng kết quả trong x luôn được cập nhật.

Nếu bạn muốn thực hiện x "thuộc tính phụ thuộc lười biếng", bạn có thể muốn xem các đề xuất trong câu trả lời của tôi cho this question.

+1

Giả sử tôi đã sử dụng 'x' trong các thuộc tính phụ thuộc khác; 'x' cũng sẽ được tính toán lại cho mọi thuộc tính phụ thuộc khác, đúng không? –

+0

@ strictrude27: Có. – Jonas

Các vấn đề liên quan