我有两个功能:
function [] = func_one()
S.pb = uicontrol('style','push','unit','pix','posit',[20 20 260 30],
'string','Print Choices','callback',{@func_two,S});
我有第二个功能:
function [a] = func_two(varargin)
a = 'alon';
end
我希望func_one
返回a
的变量func_two
。我该怎么办呢?
我试过了:
function [a] = func_one()
但我想我必须做一些'回调',{@ func_two,S})
谢谢大家!
答案 0 :(得分:3)
正如您所说,如果您希望func_one
在a
中返回值func_two
,那么在不使用回调的情况下执行此操作的最简单方法是:
function [a] = func_one()
S.pb = uicontrol('style','push','unit','pix','posit',[20 20 260 30],
'string','Print Choices');
a = func_two()
以上内容可让您说运行a=func_one
而a
将是字符串'alon'
。
如果您真的希望func_two()
成为按钮的回调,并且希望在a='alon'
的工作区中分配func_one
(调用{{1}的函数然后把它放在func_two
func_two
如果两者都不是您想要的,那么也许您可以指出为什么assignin('caller','a',a)
返回func_one
返回的内容 - 就像您希望与GUI一样的确切交互以及它如何不同从你实际经历的。
答案 1 :(得分:2)
如果您是以编程方式设计GUI,我建议您使用嵌套函数share data。例如:
function IncrementExample()
x = 0;
uicontrol('Style','pushbutton', 'String','(0)', ...
'Callback',@callback);
function callback(o,e)
%# you can access the variable x in here
x = x + 1;
%# update button text
set(o, 'String',sprintf('(%d)',x))
drawnow
end
end