Single-File Object-Oriented Script?

9 views (last 30 days)
How can I define a class and instantiate it within the same script? Something like ...
object = some_class()
while 1
object.method
end
classdef(some_class)
properties: ...
methods: ...
end
I understand that class definitions, in Matlab, are supposed to be implemented in separate files. I'm asking about some kind of work-around...
with the sole purpose of keeping the script self-contained, even if the actual program stretches out. A guess is shown below.
string = "classdef(.....)"
classdef_file = export-to-file(string)
load(classdef_file)
object = some_class()
while 1
object.method
end
... or maybe something with C code, or handle objects? Like... some way to make a 'pseudo-class' that acts like a class but has different implementation?
I'm putting this out there because someone must have found a similar solution for defining functions in the script prior to 2016.
Here are the half-solutions that I'm aware of:
  • Jupyter Notebooks with %%file method.
  • Define a structure and just use anonymous functions, a.b = @ (x) ...
If anyone finds or knows a solution, this would be awesome!

Accepted Answer

Matt J
Matt J on 14 Jun 2019
Edited: Matt J on 14 Jun 2019
You could just create a static class method that runs what you would normally run in the workspace of the script,
classdef some_class
methods(Static)
function script_code
object = some_class();
while 1
object.some_method();
end
end
end
%% Non-Static class definitions
properties
...
end
methods
function some_method(obj)
end
....
end
end

More Answers (0)

Categories

Find more on Class Introspection and Metadata in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!