Location of the "end" statement of the main function in a m. file?

6 visualizaciones (últimos 30 días)
Hello,
could someone write what is the difference between possible location of the "end" statement of the main function: before first local function vs end of a file? What is the difference?
For example: first vs. second case in this answer.
Thank you!
Marek

Respuesta aceptada

Stephen23
Stephen23 el 7 de Ag. de 2020
Editada: Stephen23 el 7 de Ag. de 2020
"before first local function"
any functions defined after the main function are local functions:
"vs end of a file?"
any functions defined within the main function are nested functions:
These can be combined too, e.g.:
function mymain()
... code
function mynest()
... code
end % mynest()
end % mymain()
function mylocal()
... code
end % mylocal()
Nested functions have access to the parent function's workspace. Local functions do not.
  1 comentario
Marek Gradzki
Marek Gradzki el 7 de Ag. de 2020
Ok, right, thanks! So I guess the main difference is about access to the variables defined in the main function.

Iniciar sesión para comentar.

Más respuestas (1)

Sudheer Bhimireddy
Sudheer Bhimireddy el 7 de Ag. de 2020
If you have 'end' at the end of a file, then your functions become 'Nested functions'. The variables created inside the function and their scope changes.
Read this, this and this MATLAB documentation.
Hope this helps.
  3 comentarios
Bruno Luong
Bruno Luong el 7 de Ag. de 2020
Editada: Bruno Luong el 7 de Ag. de 2020
function caller
a = 1;
function c = foo(d)
eval('b = d;'); % error "forbidden"
c = a + b;
end
function c = bar(d)
b = [];
eval('b = d;'); % OK
c = a + b;
end
fprintf('bar(2) = %g\n', bar(2));
fprintf('foo(2) = %g\n', foo(2)); % this won't run
end

Iniciar sesión para comentar.

Categorías

Más información sobre Environment and Settings en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by