5

我在matlab中有两个函数,大致是这样的

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

function f2()
  ...
end

其中 evaluate_callback 是调用 f2 的外部库函数。

我希望能够从 f2 内部读取 a 的当前值。有没有办法在不使用全局变量的情况下实现这一点?

4

2 回答 2

10

在里面做f2一个嵌套函数f1

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

    function f2()
      %# you can access a here
      disp(a)
    end
end
于 2012-06-06T16:55:08.590 回答
3

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

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

  function f2()
    % refer to a
    ...
  end
end
于 2012-06-06T16:53:54.137 回答