Is there the more elegant way to do this?

1 visualización (últimos 30 días)
G A
G A el 28 de En. de 2014
Editada: G A el 31 de En. de 2014
I would like to call arguments of function from a string or cell array. For example, this code works as I want:
function testarg()
a=1;b=2;c=3;
m='a,b,c';
eval(['myfun(',m,')']);
function myfun(a,b,c)
a
b
c
Is there another way to do this? Say, without using eval ?
  2 comentarios
Jos (10584)
Jos (10584) el 29 de En. de 2014
Just a tip: whenever you found yourself using eval, you will be 99.999% sure that there is a way to do it some other way without using eval that is:
  • more efficient
  • less error-prone
  • without hideous side-effects
  • easy to code, read and maintain
  • ...
eval(char('chro''&HB@MCNVHSGNTSDU@K &('+1))
G A
G A el 29 de En. de 2014
Editada: G A el 29 de En. de 2014
Thanks, Jos. I knew how 'bad' is eval- this matter was intensively discussed here by the community. I just wanted to demonstrate my purpose - it was my desperate try to achieve what I want.:)

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 28 de En. de 2014
function myfun(varargin)
varargin{:}
  17 comentarios
Matt J
Matt J el 31 de En. de 2014
Editada: Matt J el 31 de En. de 2014
It sounds like you should be assigning your data to struct fields, rather than to individual variables.
S.a=1;
S.b=2;
S.c=3;
Now everything is conveniently bundled in S and you can pass that around to functions as a single argument.
G A
G A el 31 de En. de 2014
Editada: G A el 31 de En. de 2014
Thanks, Matt! Now I can rename all my variables myname to S.myname and use them as before within my program and pass to functions as single argument S. Previous solution - to use variables as C{1}, C{2} is not convenient - without names. Originally, I thought there could be a way to pass the names as 'a', 'b', which I could bundle as C={'a','b'}...

Iniciar sesión para comentar.

Más respuestas (1)

Amit
Amit el 28 de En. de 2014
function testarg()
a=1;b=2;c=3;
abc(a,b,c)
function abc(a,b,c)
a
b
c
This wil ldo just fine.
  4 comentarios
Amit
Amit el 28 de En. de 2014
See MAtt's solution. That will do it.
G A
G A el 28 de En. de 2014
Thank you, Amit!

Iniciar sesión para comentar.

Categorías

Más información sobre Scope Variables and Generate Names en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by