2

私がやりたいことは次のとおりです。

a = 5 
foo = @(x) x+a
a = 3
foo(1) % recieve 4

代わりに、6つしか得られません!私が実行した他のいくつかのテストでは、 is が呼び出されたときではなく、ais が評価されたことがわかりました。foofoo

いろいろな理由で一緒に仕事ができない

foo = @(x,a) x+a
4

3 に答える 3

1

あなたが求めていることはお勧めできません。デバッグが困難になります。

とはいえ、関数を使用しevalinて手を伸ばして の現在の値を取得することもできますa

a=5; 
foo = @(x)evalin('caller','a')+x; 
foo(1)  %Returns 6

a=3; 
foo(1)  %Returns 5

より良い (はるかに良い!) の定義をa適切なデータ構造またはオブジェクトにプッシュし、関数を作成することgetCurrentValueOfA()です。foo次に、次のように定義できます

foo = @(x) getCurrentValueOfA() + x;
于 2014-04-10T20:24:25.640 に答える