Pertanyaan folder @folder dan +


Apa arti dari nama folder berikut di MATLAB?

  • @folder
  • +folder

Saya telah membuat kelas Tata.m yang menggunakan classdef sintaksis. Haruskah saya memasukkannya ke dalam @folder atau a +folder?

Saya telah melihat dokumentasi tetapi tidak terlalu jelas di mana kasus tersebut @folder harus digunakan dan dalam hal ini +folder seharusnya digunakan.


32
2018-03-20 05:42


asal


Jawaban:


Itu +folder sepotong adalah folder paket MATLAB. Jika Anda menempatkan Tata.m di lokasi seperti +folder/Tata.m, akan diketahui MATLAB sebagai kelas folder.Tata. Jika Anda menempatkannya di folder seperti someOtherFolder/Tata.m, atau someOtherFolder/@Tata/Tata.m, akan diketahui MATLAB sebagai Tata.

Ini dapat berguna untuk menempatkan classdef file dalam direktori kelas seperti @Tata untuk memungkinkan Anda menempatkan definisi beberapa (atau semua) metode dalam file terpisah.

Itu dokter memiliki lebih banyak detail.

EDIT: Untuk mencoba mengklarifikasi @ direktori: secara historis, kelas Tata dengan metode methodOne dan methodTwo akan membutuhkan file-file berikut:

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

Dalam sistem objek "baru", Anda masih dapat menggunakan tata letak di atas tanpa modifikasi. Pada ekstrem yang lain, Anda dapat menempatkan seluruh penerapan Tata dalam satu classdef blokir:

somePlaceOnThePath/Tata.m

Jika Anda memiliki beberapa metode besar, atau ingin memisahkan implementasi kelas Tata menjadi beberapa file untuk membuat pengembangan paralel lebih sederhana, Anda dapat menggunakan classdef seperti ini:

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

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

Dan juga

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

Tegasnya, deklarasi uang muka methodTwo dalam classdef bersifat opsional karena menggunakan penentu akses default. Jika Anda ingin memilikinya methodTwo menjadi metode pribadi, Anda dapat menempatkannya di methods (Access = private) blok.


35
2018-03-20 07:16