What does @ on a dir of *.m files mean?
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
What does it mean when the first character on a directory containing related *.m files is @?
I am an ML Noob. I have acquired some ML code and I am attempting understand it. In it there are certain directories for which the first character of the name is @.
example: @DBserver - DBserver
- ls
- put
If I attempt to open DBserver, it opens. If I attempt to open ls or put, DBserver opens. What is going on here? I'll bet the @ means something.
I couldn't find anything on this in the documentation. Feel free to point me to it if I've missed.
Thanks in advance.
0 Commenti
Risposte (2)
James Tursa
il 20 Giu 2014
Modificato: James Tursa
il 20 Giu 2014
@dirname means that it is an old-style class definition, the class name being dirname. All of the functions (methods) that the class supports are listed as files in that directory. To use such a class, simply put the directory that @dirname is in on the MATLAB path (i.e., do NOT put the @dirname itself on the path ... put its parent on the path). Note that this is not the same thing as a classdef type of class (the NEW style of defining classes in MATLAB).
2 Commenti
James Tursa
il 25 Giu 2014
The new classdef style definitely has added OOP capability compared to the @dirname class style, but only for strict m-file usage. The new classdef classes are horrible to work with in mex routines, since there are no official API functions available to get pointers to the properties. In a mex routine, the only functions available for classdef property access do a deep data copy to get or put a property. So if you are working with very large arrays it can be a deal breaker. But with the old style classes you can get and set fields easily in a mex routine without making deep copies. This can be a huge advantage if you are working with large arrays.
per isakson
il 3 Lug 2014
Modificato: per isakson
il 3 Lug 2014
@ClassName folders may be used with the new-style class definitions much in the same way as with the old-style. See
If you use multiple files to define a class, put all the class-
definition files (the file containing the classdef and all class
method files) in a single @ClassName folder. That @-folder must be
inside a folder that is on the MATLAB path. You can define only one
class in an @-folder.
0 Commenti
Vedere anche
Categorie
Scopri di più su Software Development Tools in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!