0

私には2つの機能があります:

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

そして私は2番目の機能を持っています:

   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()

上記はあなたが実行すると言うことを可能にしa=func_onea文字列になります'alon'

本当にfunc_two()プッシュボタンのコールバックになりたい場合、および(を呼び出す関数)a='alon'のワークスペースに割り当てたい場合は、これをfunc_onefunc_twofunc_two

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

func_oneそして、どちらもあなたが望むものではない場合、おそらくあなたはあなたが返すものを返したい理由を示すことができfunc_twoます-あなたがあなたのGUIと持っていることを望んでいる正確な相互作用やあなたが実際に経験しているものとどのように異なるかなど。

于 2012-05-24T21:15:19.230 に答える
2

プログラムでGUIを設計している場合は、ネストされた関数を使用してデータを共有することをお勧めします。例:

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

ここに画像の説明を入力してください

于 2012-05-25T01:30:51.870 に答える