Nếu tôi hiểu câu hỏi của bạn một cách chính xác, câu trả lời có thể phụ thuộc vào cách bạn đang tạo các lớp học mà từ đó bạn nhanh chóng các đối tượng. Trong các phiên bản mới nhất của MATLAB, các lớp có thể được định nghĩa theo hai cách: một lớp "giá trị" hoặc một lớp "xử lý" (tài liệu MATLAB here). Trích dẫn từ tài liệu:
lớp Giá trị:. "Đối tượng của lớp học giá trị có liên quan đến vĩnh viễn với các biến mà họ được giao nhiệm vụ Khi một đối tượng giá trị được sao chép, dữ liệu của đối tượng cũng sao chép và mới đối tượng là độc lập với các thay đổi đối với đối tượng ban đầu. Các thể hiện hoạt động giống như các lớp số và cấu trúc MATLAB chuẩn. "
Xử lý lớp: "Các đối tượng của các lớp xử lý sử dụng một tay cầm để tham chiếu các đối tượng của lớp. Khi một đối tượng xử lý được sao chép, xử lý sẽ được sao chép , nhưng không phải là dữ liệu được lưu trữ trong thuộc tính của đối tượng Bản sao đề cập đến cùng một dữ liệu như bản gốc — nếu bạn thay đổi giá trị thuộc tính trên đối tượng gốc, đối tượng được sao chép phản ánh cùng một thay đổi."
Mẫu mã dưới đây đưa ra một số ví dụ về làm thế nào để tương tác với '' đối tượng lồng nhau như bạn mô tả ở trên, cả hai đối tượng lồng nhau giá trị hạng nhất và xử lý đẳng cấp lồng đối tượng:
% For value classes:
objC = C(...); % Make an object of class C, where "..." stands
% for any input arguments
objB = B(...,objC); % Make an object of class B, passing it objC
% and placing objC in field 'objC'
objA = A(...,objB); % Make an object of class A, passing it objB
% and placing objB in field 'objB'
% If the '.' operator (field access) is defined for the objects:
objA.objB.objC.D = 1; % Set field 'D' in objC to 1
objA.objB.objC = foo(objA.objB.objC,...); % Apply a method that
% modifies objC and
% returns the new
% object
% For handle classes:
hC = C(...); % Get a handle (reference) for a new object of class C
hB = B(...,hC); % Get a handle for a new object of class B,
% passing it handle hC and placing it in field 'hC'
hA = A(...,hB); % Get a handle for a new object of class A,
% passing it handle hB and placing it in field 'hB'
% If the '.' operator (field access) is defined for the objects:
hC.D = 1; % Set field 'D' to 1 for object referenced by hC; Note
% that hC and hA.hB.hC both point to same object, and
% can thus be used interchangably
foo(hC); % Apply a method that modifies the object referenced by hC
% If instead using get/set methods for the handle object:
set(hC,'D',1);
set(get(get(hA,'hB'),'hC'),'D',1); % If variable hC wasn't made, get
% reference from nested objects
foo(hC);
foo(get(get(hA,'hB'),'hC'));
Như bạn có thể thấy, sử dụng lớp xử lý có thể giúp bạn tránh phải thực hiện các cuộc gọi chức năng và tham chiếu trường bằng cách lưu bản sao tay cầm (về cơ bản là con trỏ) trong biến khác. e đi sự cần thiết phải ghi đè lên các bản sao cũ của các đối tượng với những cái mới được trả về bởi các phương thức hoạt động trên các đối tượng đó.
Hy vọng điều này sẽ giúp với những gì bạn đang yêu cầu.
HN là gì? – iddober
Đây không phải là câu trả lời mà là của tất cả những người có thể kết thúc tại câu hỏi này, có một cái nhìn tại (khá tốt đẹp) [DI framework for Matlab] (https://github.com/mattmcd/mdepin), viết bởi Matt McDonnell. Điều này sẽ giúp bạn đi .... – Kris
Theo dõi nhận xét của Kris, đây là một blog về chủ đề phục vụ cho MATLAB (và sử dụng khuôn khổ DI của Matt MCDonnell): http://blogs.mathworks.com/developer/2016/02/24/tiêm phụ thuộc/ –