Convert folder of functions - > Class folder

I have a folder full of functions and I would like to turn it into a class folder.
example: my folder of function has
func1.m
func2.m
func3.m
Currently I have dumped all the function signatures into a class method.
classdef myclassname<handle
% properties blah blah
% constructor here etc etc
methods (Static)
func1()
func2()
func3()
end
end
end
These functions call out other functions and I would have to create dot notation each time, ex:
function func1()
myclassname.func2
myclassname.func3
end
Now, I have more than 50 functions. I dont want to keep looking around to find out where I need to put the class handle and dot wherever a function within myclass folder is being called -- Is there something more efficient that will do all of that for me?

7 Comments

I have a folder full of functions and I would like to turn it into a class folder.
Can you say a little more about why you want to turn the folder full of functions into a class? What benefit do you hope to gain by doing so?
perhaps you should consider creating a package instead of a class and then import the package .
I don't think packaging the files will help, unfortunately. Packaged functions still need to refer to each other using package.func syntax.
Yes, you still need to refer to the prepend the name of the package, even within the package scope. A very annoying feature of matlab.
However, in this case, you could just add an import packagename.* to the start of each function. Less painful than trying to locate each function call.
Thanks for the responses, I'll read up on packaging files and see how if it will help my situation--
@Steven Lord I should have been more specific, I'm creating an HMI and it would just be a lot more organized to contain all the callback functions into a class, so I have a mix of static and non static functions
You may be interested in App Designer if you're not already using it.
@Steven
As aesthetic and convenient App Designer is, it does not support some functionalities that I want-- so I'm doing it programmatically

Sign in to comment.

 Accepted Answer

Matt J
Matt J on 7 Feb 2019
Edited: Matt J on 7 Feb 2019
One solution would be to move all the functions to a private/ sub-folder within the @myclassname folder. Then, assuming you still even need static versions of those functions, you can simply add aliases for them in a Static methods block:
methods (Static)
function varargout=func1(varargin)
[varargout{1:nargout}]=func1(varargin{:}); %calls @myclassname/private/func1
end
function varargout=func2(varargin)
[varargout{1:nargout}]=func2(varargin{:}); %calls @myclassname/private/func2
end
function varargout=func3(varargin)
[varargout{1:nargout}]=func3(varargin{:}); %calls @myclassname/private/func3
end
...
end

More Answers (0)

Categories

Find more on Function Creation in Help Center and File Exchange

Products

Asked:

on 7 Feb 2019

Edited:

on 7 Feb 2019

Community Treasure Hunt

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

Start Hunting!