Почему я получаю ошибку, когда помещаю вызов для вывода функции (определенной в функции) * после * определения функции, а не до? - PullRequest
0 голосов
/ 02 января 2019

Мой код делает то, что я хочу, но я хочу понять, почему он делает то, что делает. Я нахожу, что в MATLAB, если я вызываю вывод функции после определения функции, я получаю ошибку, но нет, если я вызываю ее до определения функции. У меня сложилось впечатление, что MATLAB ставит телегу перед лошадью, и я хотел бы знать, почему я ошибаюсь в этом впечатлении.

function [out,outt]=f_testFunctionWithinFunction(arg_in)
    % function has to be invoked BEFORE its definition.
    out=f_inside(arg_in); 

    function use=f_inside(argg_in),
        use=sin(argg_in);
    return

    outt=f_inside(arg_in); 

return

Выражение out=f_testFunctionWithinFunction(5) дает -0.9589=sin(5). Однако [out,outt]=f_testFunctionWithinFunction(5) выдает сообщение об ошибке из-за запроса "outt". Почему?

1 Ответ

0 голосов
/ 02 января 2019

Вы должны завершать функции с end вместо return.попробуй:

function [out,outt]=f_testFunctionWithinFunction(arg_in)
% function has to be invoked BEFORE its definition.
disp('test')
out=f_inside(arg_in);

function use=f_inside(argg_in),
use=sin(argg_in);
end

outt=f_inside(arg_in);

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...