Page 1 of 1
					
				Indirect Referencing
				Posted: Thu Mar 26, 2009 6:16 pm
				by vamp07
				Hi guys,
I'm trying to reference the contents of a variable using its name in another variable. So far its not working. Any pointers? Here is an example of what I mean.
put "x,y,z" into var1
put "var1" into varibleName
put item 1 of varibleName
What I get in the message box is var1 but what I want is x.
Thanks!!!
			 
			
					
				
				Posted: Thu Mar 26, 2009 6:33 pm
				by Mark Smith
				try
do "put item 1 of" && variableName
Best,
Mark
			 
			
					
				
				Posted: Thu Mar 26, 2009 7:00 pm
				by vamp07
				Ahhhh.. That makes sense. Does anybody know of some other thread that already answers this question? I looked for "indirect" but could not find anything. Seems like something pretty common people would want to do.
			 
			
					
				
				Posted: Thu Mar 26, 2009 9:45 pm
				by Janschenkel
				You might also be interested in the 
value function.
Code: Select all
on mouseUp
  local x,y
  put 16 into x
  put "sqrt(x)" into y
  answer value(y)  -- should display 4
end mouseUp
HTH,
Jan Schenkel.
 
			
					
				
				Posted: Thu Mar 26, 2009 10:11 pm
				by SparkOut
				Nice one Jan, you've killed two birds with one stone here. See 
http://forums.runrev.com/phpBB2/viewtop ... 2612#12612 
			
					
				Re: Indirect Referencing
				Posted: Fri Mar 27, 2009 2:13 am
				by Lynn P.
				vamp07 wrote:Hi guys,
I'm trying to reference the contents of a variable using its name in another variable. So far its not working. Any pointers? Here is an example of what I mean.
put "x,y,z" into var1
put "var1" into varibleName
put item 1 of varibleName
What I get in the message box is var1 but what I want is x.
Thanks!!!
var1 is a variable so it doesn't need quotes. If you add quotes to it, Rev treats it as a text string.
Try:
Code: Select all
put "x,y,z" into var1
put var1 into varibleName
put item 1 of varibleName
 
			
					
				
				Posted: Fri Mar 27, 2009 2:23 pm
				by vamp07
				var1 is a variable so it doesn't need quotes. If you add quotes to it, Rev treats it as a text string. 
Try: 
That would work but its not really indirect referencing.
 
			
					
				
				Posted: Fri Mar 27, 2009 4:12 pm
				by sturgis
				edit: another kudo to mark.  I only know about value() due to some Mark tips.
use the value function
Code: Select all
on mouseUp
   
put "x,y,z" into var1
put "var1" into varibleName
put item 1 of value(varibleName)
end mouseUp
This is the correct method to indirect reference yes?
Similar to eval in other languages.
vamp07 wrote:var1 is a variable so it doesn't need quotes. If you add quotes to it, Rev treats it as a text string. 
Try: 
That would work but its not really indirect referencing.
 
 
			
					
				
				Posted: Fri Mar 27, 2009 4:16 pm
				by vamp07
				I agree seems like value() is the most elegant way of doing this. I'm doing to go back and change my code from the do method.