Single-File Object-Oriented Script?

22 ビュー (過去 30 日間)
Silas Henderson
Silas Henderson 2019 年 6 月 14 日
コメント済み: Silas Henderson 2019 年 6 月 14 日
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!

採用された回答

Matt J
Matt J 2019 年 6 月 14 日
編集済み: Matt J 2019 年 6 月 14 日
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
  1 件のコメント
Silas Henderson
Silas Henderson 2019 年 6 月 14 日
Cool!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeClass Introspection and Metadata についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by