2012-06-06 196 views
4

我在MATLAB两种功能,这大致是这样的在MATLAB中的两个函数之间共享一个变量?

function f1() 
    setup_callback(@f2); 
    a = 1; 
    evaluate_callback(); 
end 

function f2() 
    ... 
end 

其中evaluate_callback是一个外部库函数,它们调用F2。

我希望能够读取f2中的当前值。有没有一些方法来实现这一点,而不使用全局变量?

回答

9

f2嵌套函数内部f1

function f1() 
    setup_callback(@f2); 
    a = 1; 
    evaluate_callback(); 

    function f2() 
     %# you can access a here 
     disp(a) 
    end 
end 
2

嵌套函数将提供您想要的范围。请注意,除了从f1内部或通过函数句柄之外,没有其他方法可以调用f2回调函数。所以f1可以返回@f2句柄,全局作用域中的其他函数可以这样调用它。

function f1() 
    setup_callback(@f2); 
    a = 1; 
    evaluate_callback(); 

    function f2() 
    % refer to a 
    ... 
    end 
end 
相关问题