我有一个函数A,它将调用函数B,从函数B我想终止函数A. 主要问题是函数B只能在函数A不运行时运行。 我知道没有类似ctr + c版本的脚本,但这不是我想要的,因为它不是需要终止但功能不同的函数本身。有没有办法做到这一点?
**function A**
B(varargin)
end
**function B(varargin)**
kill_function_A
some more statements
end
让我对此进行修改,以便更清楚:
**function A**
if some_statement_is_true
B(varargin)
end
much more code
**function B(varargin)**
terminate A
update A (this is the reason why it needs to be terminated)
A (restart A, since it is now updated, I can terminate B within A if it is active)
end
请注意,在B能够运行之前需要终止A.所以“B;返回”是不可能的。 (到目前为止,感谢所有答案)
答案 0 :(得分:0)
您真正想要的是在调用A
之后不在B
执行语句(如果需要)。使用以下代码可以轻松完成此操作。
function A
terminate = B;
if terminate == true
return
end
end
function terminate = B
terminate = true;
end
答案 1 :(得分:0)
这会有效吗?
function A
if some_statement_is_true
B(varargin)
return
end
much more code
function B(varargin)
update A (this is the reason why it needs to be terminated)
A (restart A, since it is now updated, I can terminate B within A if it is active)
end
它不会“停止”A
,但有效A
除了调用B
之外什么也不做,这会导致或多或少相同的结果。
或者,您应该运行B
并更新some_statement_is_true
:
function A
while some_statement_is_true
B(varargin);
some_statement_is_true = ...; % make sure this gets updated
end
much more code
function B(varargin)
update A;
end
修改强>
如果A是独立的.exe,您可以执行以下操作,停止并运行新版本:
function A
if some_statement_is_true
B(varargin);
exit();
end
much more code
function B(varargin)
update A;
system('A.exe');
end
我已成功将此方案用于自我更新应用程序,需要重新启动MATLAB。