Hi all,
I need to create variables dynamically depending on what I parse from a text
file.
For testing, I just made a simple script that parses the file and generates a
string array that defines some variables:
txt=["a=1";"b=2"];
I then
execstr(txt);;
to create the variables needed (here "a" and "b").
So far, so good.
Now, I need to refactor my code to turn my messy script into a proper set of
functions (see example code below).
The issue now is that I can't figure out how to define "a" and "b" from within
the function.
I tried to declare them as "global" inside the function, but it does not work:
as I haven't declared them global at the top level before calling my function,
it cannot work.
Sadly, as I don't know in advance the variables I'll find when I parse the
file, I cannot declare the variables global at the top level.
Any solution or workaround?
Cheers,
Antoine
/////example code
//script version:
clear a b;
exists("a")// nope
exists("b")// nope
txt=["a=1";"b=2"];//typical result from parsing my txt file
execstr(txt);
exists("a")// yes
exists("b")// yes
//now with a function
//broken & useless
function myload()
txt=["a=1";"b=2"];
//string to declare a and b global
globaltxt="global "+strsubst(txt, '/=.*/', ';','r');
//does not work
execstr(globaltxt);
execstr(txt);
endfunction
//does not work
clear a b;
exists("a")// nope
exists("b")// nope
myload()//
exists("a")// nope
exists("b")// nope
//this will work
clear a b
exists("a")// nope
exists("b")// nope
global a b // well I can't do that in practice, I don't know a and b in advance
myload()//
exists("a")// nope
exists("b")// nope
_______________________________________________
users mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/users