Giả sử tôi có các lớp sau:MATLAB - đặt/truy cập vào các trường của cấu trúc?
classdef myClass
properties
Globals = struct(...
'G1', 1, ...
'G2', 2 ...
);
end
methods
% methods go here
end
end
tôi sử dụng struct vì có các tài sản khác có cấu trúc.
Có cách nào để cung cấp trình thiết lập cho trường của cấu trúc không? Naively cung cấp
function obj = set.Globals.G1(obj, val)
obj.Globals.G1 = val; % for example
end
không hoạt động.
Đó là những gì tôi đã tìm, nhưng tôi đã tìm tôi sẽ hỏi. Vấn đề tôi gặp phải với lớp Globals là tôi có một số lớp "ngang hàng" mà tất cả đều thừa hưởng yêu cầu để có cấu trúc Globals, nhưng những gì bên trong cấu trúc đó có thể khác nhau. Có cách nào để tạo ra setters động/getters? Tôi vừa biết cách sử dụng các thuộc tính động, –
@ strictrude27: Nếu lớp cha xác định thuộc tính, thì nó cũng phải xác định các phương thức set/get. Tuy nhiên, các phương thức đặt/nhận này có thể gọi, ví dụ: các phương thức được gọi là "setGlobal" và "getGlobal", do đó có thể bị quá tải. Cá nhân, tôi đã đi với các thuộc tính động trong một trường hợp tương tự, nhưng kinh nghiệm cho thấy rằng trừ khi bạn thực sự cần các thuộc tính động, tốt hơn là không mạo hiểm phát hiện lỗi Matlab. – Jonas
Tất cả những gì tôi muốn làm với setters động là làm kiểm tra kiểu - ý định của tôi là đối xử với đối tượng này như một cấu trúc và không có gì khác .. –