Re: Converting a string to a variable name

new topic     » goto parent     » topic index » view thread      » older message » newer message

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

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu