0

我有两个功能:

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返回 的变量afunc_two请问我该怎么做?

我试过了:

 function [a] = func_one()

但我想我必须对“回调”做点什么,{@func_two,S})

谢谢你们!

4

2 回答 2

3

如果,如您所说,您想func_one返回值afunc_two那么不使用回调的最简单方法是:

function [a] = func_one()
     S.pb = uicontrol('style','push','unit','pix','posit',[20 20 260 30],
                      'string','Print Choices');

     a = func_two()

以上将允许您说 runa=func_one并将a成为 string 'alon'

如果你真的想func_two()成为你的按钮的回调,并且你想a='alon'被分配到func_one(调用的函数func_two)的工作区中,那么把它放在func_two

assignin('caller','a',a)

如果两者都不是您想要的,那么也许您可以说明为什么要func_one返回返回的内容func_two- 例如您希望与 GUI 进行的确切交互以及它与您实际体验的不同之处。

于 2012-05-24T21:15:19.230 回答
2

If you are designing a GUI programmatically, I suggest you use nested functions to share data. Example:

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

enter image description here

于 2012-05-25T01:30:51.870 回答