2012-06-06 419 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 
相關問題