Nested functions in a class - Call the function without including the class name as filename.function

조회 수: 2 (최근 30일)
Hello MATLAB experts,
I defined a class with different functions that are called from external .m files but also call eachother reciprocally, that is the functions call other functions in the same class. As far as I could understand, I always have to use the call form classname.function to call a function from this class. However, I would rather avoid it for the function that are all in the same class in the same file (similarly to local functions), to make the code clearer.
For example:
classdef small_test
properties
PropertyName
end
methods (Static)
function d = sum_scale_test(a,b)
c = a+b;
d = small_test.scale_test(c);
end
function b = scale_test(a)
b=10*a;
end
end
end
Is there a way to skip the long call:
small_test.scale_test
and just use
scale_test
?
Maybe with some access option?
Thank you for the help!

채택된 답변

Mitch Lautigar
Mitch Lautigar 2022년 6월 1일
편집: per isakson 2022년 6월 3일
You can put subfunctions/nested functions below the Class call (after the end for classdef) and therefore have local functions for the class to reference. This will look like the following:
classdef <namehere>
properties
%....
end
methods
function obj = dosomething(obj)
end
end
function function_callsub1
%do stuff here
end
  댓글 수: 3
Mitch Lautigar
Mitch Lautigar 2022년 6월 1일
No. They are local functions in this case. If you want regular functions, you need to create the functions outside of the class.
fr td
fr td 2022년 6월 2일
편집: fr td 2022년 6월 2일
Thank you. I had to separate the functions that are only used within the class file from those that are used externally and in one case I had to copy the function both inside the class (for external use) and below the class end for local use. It works fine.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Software Development Tools에 대해 자세히 알아보기

제품


릴리스

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by