【问题标题】:Why do I get an error when I put a call for the output of a function (defined within a function) *after* the function definition, and not before?为什么我在函数定义之后而不是之前调用函数(在函数内定义)的输出时会出现错误?
【发布时间】:2019-01-02 03:57:53
【问题描述】:

我的代码做我想做的事,但我想了解它为什么做它做的事。我发现在 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"。为什么?

【问题讨论】:

标签: matlab function nested


【解决方案1】:

您应该以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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多