Xóa các phiên bản của lớp học của bạn sẽ hoạt động.
Giả sử rằng bạn có một thể hiện của "MyClass" trong không gian làm việc cơ sở của bạn:
foo = MyClass;
Bây giờ, giả sử bạn chỉnh sửa MyClass và thêm mới phương pháp tĩnh "bar":
foo.bar(); % Will cause error, as foo is instance of previous "MyClass"
Tuy nhiên, "clear" -ing foo sẽ xóa tham chiếu đến lớp trước đó:
clear('foo');
foo = MyClass;
foo.bar(); % this should now work.
Điều này sẽ ổn nếu bạn chỉ có một hoặc hai phiên bản của lớp trong vùng làm việc cơ sở của bạn. Nếu bạn có nhiều trường hợp của lớp trong không gian làm việc cơ sở của bạn, sau đó bạn có thể muốn viết một kịch bản để xóa chúng:
varList = whos;
for iVar = 1:numel(varList)
if isequal('MyClass', varList(iVar).class)
clear(varlist(iVar).name);
end
end
clear('varList');
clear('MyClass');
Nếu bạn có thể hiện của các lớp tại các địa điểm hơn, bạn có thể muốn mở rộng kịch bản khi thích hợp.
Cuộc gọi cuối cùng để xóa tên lớp có thể chỉ cần thiết nếu bạn đang thực hiện sửa đổi đối với các lớp trong hệ thống phân cấp thừa kế.
Nguồn
2010-12-16 19:07:52
Điều đó có hiệu quả, cảm ơn! Liệu có thể làm điều này trên một lớp học cá nhân? – Brendan
Theo như tôi biết, không có cách nào để sử dụng CLEAR để cập nhật các lớp riêng lẻ đã được sửa đổi. Đó là tất cả hay không! =) – gnovice
Đã cố gắng phục hồi, không có tùy chọn nào hoạt động. Hãy nghĩ rằng các lớp học rõ ràng là cách duy nhất, cổ vũ! – Brendan