What is wrong with the code?

1 visualización (últimos 30 días)
aditya
aditya el 4 de Mayo de 2011
I have this small code:
function test
L = 10;
t = existing_chk('L',uigetdir)
function x = existing_chk(name_x,a)
chk = exist(name_x,'var')
if chk == 0;
x = a;
else
x = eval(name_x);
end
end
end
The problem is that uigetdir is executed even though 'L' exists. I cannot figure out the problem

Respuesta aceptada

Kelly Kearney
Kelly Kearney el 4 de Mayo de 2011
The uigetdir function is being called on line 2 of your function, prior to existing_chk ever being called, since you have not enclosed the function name in quotes. The second argument of existing_chk should be a string. Replace that line with
t = existing_chk('L','uigetdir')
You should probably avoid using eval too, but that's just general programming advice; the function should work as written.
  1 comentario
aditya
aditya el 4 de Mayo de 2011
Thanks Kelly.
Another thing - is there an alternative in this case to eval ?

Iniciar sesión para comentar.

Más respuestas (1)

Daniel Shub
Daniel Shub el 4 de Mayo de 2011
MATLAB evaluates uigetdir before existing_chk, so that it can pass whatever uigetdir returns to existing_chk. Either turn the second argument into a function handle @()uigetdir and call a() or turn it into a string 'uigetdir' and call eval(a).

Categorías

Más información sobre Environment and Settings en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by