Filter löschen
Filter löschen

Scope of variables passed to function handles?

2 Ansichten (letzte 30 Tage)
Dehuan
Dehuan am 16 Dez. 2014
Kommentiert: Dehuan am 16 Dez. 2014
Hi, everyone,
I want to ask about the non-input variables in function handles.
For example, following code returns h(1)=2.
b=1;
h=@(a)a+b;
clear b;
display(sprintf('h(1)=%d', h(1)));
Is this kind of usage safe and correct?
Dehuan

Akzeptierte Antwort

matt dash
matt dash am 16 Dez. 2014
As far as i know, yes this is safe and correct. Any non-input variables pass their values to the function at the time the function handle was created. Subsequent changes to or clearing of those variables has no effect on the function.
  2 Kommentare
Adam
Adam am 16 Dez. 2014
Yes, this is correct. It is also why passing the handles structure, for example, in a GUIDE-based file to a callback is not a good idea, because a copy of the structure at the exact time the callback is set is hard-coded into the callback, irrespective of when it is called.
Dehuan
Dehuan am 16 Dez. 2014
Thanks guys.
This is actually a very neat feature.
It makes dependency-inject and functional programming a lot simpler.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by