Scope of variables passed to function handles?

1 visualización (últimos 30 días)
Dehuan
Dehuan el 16 de Dic. de 2014
Comentada: Dehuan el 16 de Dic. de 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

Respuesta aceptada

matt dash
matt dash el 16 de Dic. de 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 comentarios
Adam
Adam el 16 de Dic. de 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 el 16 de Dic. de 2014
Thanks guys.
This is actually a very neat feature.
It makes dependency-inject and functional programming a lot simpler.

Iniciar sesión para comentar.

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by