Re: Converting a string to a variable name
- Posted by Kat <gertie at PELL.NET> Jul 28, 2002
- 482 views
On 28 Jul 2002, at 13:49, rubis at fem.unicamp.br wrote: > > Hi all; > > Direct to the point... > > I'm writing a program that uses a lot of sequencial variables: > > a1, a2, a3... > > and give values for then: > > a1=1, a2=2, a3=3 ...(for example) > > > I would like to do this: > > atom a1,a2,a3 > sequence s > for x=1 to 3 do > > s=sprintf("%d",x) > "a"&s=x -- atribute a "variable variable" name a > variable value :>)) > > end for > > but this does not work because "a"&s is a string, not a variable. > > How I can convert a string to a variable name ??? After you got 3 examples of indexing a sequence, you know it cannot be done. I do this in mirc a *lot*, since i cannot know beforehand what the assignments will be: if ( +p+ isin %nickstat. [ $+ [ $remove($mask($address(%clones.nick ,5),1), * ) ] $+ . $+ [ # ] ] ) { goto skipclonekick1 } However, you can do this in Eu: sequence names sequence data for x=1 to 3 do s=sprintf("%d",x) if length(names) <= x then names &= {} data &= {} end if names[x] = sprintf("%d",x) -- "kat" works too data[x] = x -- give it any object end for Then to locate the data by name in euphoria, you use: function getdata(sequence var) atom isit isit = find(var,names) if (isit != 0) then return data[isit] else return "" end if end function value = getdata("kat") Kat