W MATLAB możesz mieć wiele funkcji w jednym pliku .m
. Istnieje oczywiście główna funkcja, a następnie nested or local functions.Wiele funkcji w jednym pliku .m zagnieżdżonym lub lokalnym, gdy "koniec" nie jest używany.
Przykłady każdego rodzaju funkcję:
% myfunc.m with local function ------------------------------------------
function myfunc()
disp(mylocalfunc());
end
function output = mylocalfunc()
% local function, no visibility of variables local to myfunc()
output = 'hello world';
end
% -----------------------------------------------------------------------
% myfunc.m with nested function -----------------------------------------
function myfunc()
disp(mynestedfunc());
function output = mynestedfunc()
% nested function, has visibility of variables local to myfunc()
output = 'hello world';
end
end
% ----------------------------------------------------------------------
Różnica jest jasne, kiedy używasz end
oświadczenia funkcji. Jednak nie sądzę, to wyraźnie udokumentowane których używasz, kiedy nie, ponieważ jest to ważny składnia:
% myfunc.m with some other function
function myfunc()
disp(myotherfunc());
function output = myotherfunc()
% It's not immediately clear whether this is nested or local!
output = 'hello world';
Czy istnieje jasne określenie, czy funkcje napisane jak myotherfunc
są lokalne lub zagnieżdżone?