Is it possible to have private folders in packages?

I have organized my code in packages and would like to save some small helper functions in a private directory. However, if I save my functions in +package/private/*.m, I can't get my code to "see" them.
Is this somehow possible?
I am using R2015b.

1 Comment

I also found the same problem when trying to put subfolders in a package (I can't remember off-hand if it was the private folder, but I think I did try this once), but it did not work because there is no option to add subfolders of a package to the path, which is required, even for private folders, as far as I am aware, in order for the functions to be seen even in the folder containing the private folder

Sign in to comment.

Answers (2)

Functions stored inside folder/+package/private/ should be visible for M-files in folder/+package/, but for no other functions. If you observe something else, consider, that there might be a different problem. How did you try to make you code seeing the files in the private folder?

6 Comments

I created a folder +package/private and put a function file funcname.m in it. I tried to call it from a class-file within +package. I got an error the my function could not be found. I tried to call it with
funcname
and with
package.funcname
Both versions gave the same error
What exactly does "call it from a class-file within +package" mean? From where did you try to run "funcname" and "package.funcname"? How did you include the package into your path? If both versions produce the same error message, it would be useful, if you post a copy of the complete message.
Please provide more details. Remember, that the readers in the forum do not have the faintest idea about what you are doing, except if you explain it.
Package folders cannot be added to the path and subfolders also can't be. The packages get picked up by the parent being on the path
Thanks to Jan! For me having:
+package/private/helperFunction.m
and calling it within the
+package/myClass.m
file via:
helperFunction();
Works perfectly
@Jan I'm trying to use private folders within /+package/@class/private to organize my directory of class methods.
Is this supported?
Furthermore, perhaps /+package/@class/protected and/or /+package/@class/public would be useful too.
V.R.
Tim
@Thimothy: I'm not sure about this, but I'd simply try it.

Sign in to comment.

A private folder in a package works fine in my Matlab 2013a.
What doesn't work, however is non-private package subfolders.
That is, I have a package +pack and inside this package I have a function 'packfun.n' and two folders: 'private' and 'notprivate'.
The function 'privfun.m' from the 'private' folder is accessible. Whereas the function 'nonpriv.m' from the 'nonprivate' folder I didn't manage to run no matter how I tried.

Products

Asked:

on 7 Dec 2017

Commented:

Jan
on 2 Aug 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!