2012-03-20 29 views
31

Ý nghĩa của các tên thư mục sau trong MATLAB là gì?@folder và + folder

  • @folder
  • +folder

tôi đã tạo ra một lớp Tata.m trong đó sử dụng các cú pháp classdef. Tôi có nên đặt nó trong một @folder hoặc +folder?

Tôi đã xem tài liệu nhưng không thực sự rõ ràng trong trường hợp này nên sử dụng @folder và trong trường hợp này, +folder nên được sử dụng.

Trả lời

34

Đoạn +folder là thư mục gói MATLAB. Nếu bạn đặt Tata.m ở một vị trí như +folder/Tata.m, nó sẽ được biết đến với MATLAB là lớp folder.Tata. Nếu bạn đặt nó trong một thư mục như someOtherFolder/Tata.m hoặc someOtherFolder/@Tata/Tata.m, nó sẽ được biết đến với MATLAB là Tata.

Có thể hữu ích khi đặt tệp classdef trong thư mục lớp như @Tata để cho phép bạn đặt định nghĩa của một số (hoặc tất cả) phương pháp trong các tệp riêng biệt.

doc có thêm chi tiết.

EDIT: Để cố gắng làm rõ @ thư mục: lịch sử, một lớp Tata với các phương pháp methodOnemethodTwo sẽ yêu cầu các tập tin sau đây:

somePlaceOnThePath/@Tata/Tata.m 
somePlaceOnThePath/@Tata/methodOne.m 
somePlaceOnThePath/@Tata/methodTwo.m 

Trong hệ thống đối tượng "mới", bạn vẫn có thể sử dụng bố trí ở trên mà không sửa đổi. Ở thái cực khác, bạn có thể đặt toàn bộ thi hành Tata trong một classdef khối duy nhất trong:

somePlaceOnThePath/Tata.m 

Nếu bạn có một số phương pháp lớn, hoặc muốn chia tay thực hiện của lớp Tata thành nhiều file để thực hiện phát triển song song đơn giản hơn, bạn có thể tận dụng một classdef như thế này:

%# somePlaceOnThePath/@Tata/Tata.m: 
classdef Tata 
    methods 
     result = methodTwo(obj, arg) 

     function methodOne(obj) 
      disp('hello from methodOne'); 
     end 
    end 
end 

Và cũng

%# somePlaceOnThePath/@Tata/methodTwo.m: 
function result = methodTwo(obj, arg) 
% do stuff with obj and arg 
end 

Nói đúng, tuyên bố trước là methodTwo trong classdef là tùy chọn vì nó sử dụng các thông số truy cập mặc định. Nếu bạn muốn có methodTwo là một phương pháp riêng tư, bạn có thể đặt nó trong khối methods (Access = private).

+2

ok, cảm ơn Edric, bây giờ, tôi hiểu được thư mục + nhưng không phải @folder – lola

+0

Liên kết tài liệu bị hỏng và tôi không thể đoán được điều nó được cho là gì. Tôi vẫn đang đấu tranh để hiểu ý nghĩa và ý nghĩa của một "thư mục gói MATLAB". – patrickvacek

+0

Hm, bây giờ tôi không chắc chắn 100%, có lẽ là http://www.mathworks.com/help/matlab/matlab_oop/scoping-classes-with-packages.html hoặc http: // www .mathworks.com/help/matlab/matlab_oop/organization-classes-in-folders.html – Edric

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