@folder and +folder

前端 未结 1 1502
盖世英雄少女心
盖世英雄少女心 2020-12-07 16:49

What is the meaning of the following folder names in MATLAB?

  • @folder
  • +folder

I\'ve created a class Tata

相关标签:
1条回答
  • 2020-12-07 17:42

    The +folder piece is a MATLAB package folder. If you place Tata.m in a location like +folder/Tata.m, it will be known to MATLAB as the class folder.Tata. If you place it in a folder like someOtherFolder/Tata.m, or someOtherFolder/@Tata/Tata.m, it will be known to MATLAB as Tata.

    It can be useful to place a classdef file in a class directory like @Tata to allow you to put the definition of some (or all) methods in separate files.

    The doc has more details.

    EDIT: To attempt to clarify the @ directories: historically, a class Tata with methods methodOne and methodTwo would require the following files:

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

    In the "new" object system, you can still use the layout above without modification. At the other extreme, you can place the entire implementation of Tata in a single classdef block in:

    somePlaceOnThePath/Tata.m
    

    If you have some large methods, or want to split up the implementation of the class Tata into several files to make parallel development simpler, you can take use a classdef like this:

    %# somePlaceOnThePath/@Tata/Tata.m:
    classdef Tata
        methods
             result = methodTwo(obj, arg)
    
             function methodOne(obj)
                 disp('hello from methodOne');
             end
        end
    end
    

    And also

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

    Strictly speaking, the advance declaration of methodTwo in the classdef is optional because it's using the default access specifiers. If you wanted to have methodTwo be a private method, you could place it in a methods (Access = private) block.

    0 讨论(0)
提交回复
热议问题