[REBOL] Re: variable variable
From: joel:neely:fedex at: 13-Jun-2001 0:34
Ammon Cooke wrote:
> Hold on while I, with my weak english skills, try to words
> this so the gurus
> know what I am talking about....
> Ok, here we go...
> What I need is this:
> I am getting a value from a text-list:
> lst1-rnd: lst1/text: random/only lst1/data
> now create a variable:
> do reduce[to-set-word lst1-rnd: 1]
> now how do I access the value of the value of lst1-rnd
> without explicitly calling it??
I'm still unclear what you mean by the phrase "without
explicitly calling it". Let's make a simple example
** Script Error: pig has no value
** Near: pig
** Script Error: cow has no value
** Near: cow
** Script Error: duck has no value
** Near: duck
; just to prove there's nothing up my sleeve... ;-) Now,
>> some-word: random/only [pig cow duck]
>> do reduce [to-set-word some-word "quack"]
At this point, we've set the word DUCK (which formerly was
not set to anything) to the string "quack". We can prove
To get at this word (and its current value) we must somehow
remember what we called it. Its "name" is still in SOME-WORD,
so we can do one of the following:
>> reduce reduce [some-word]
>> print reduce [some-word]
Once we change the value of SOME-WORD, we can't use it to
get back to DUCK and hence to "quack". So, if you're going
to change SOME-WORD, be sure to save its value somewhere,
such as in a block. For example:
repeat i 5 [
some-word: random/only [pig cow duck chicken horse dog cat]
do reduce [to-set-word some-word i]
if none? find barnyard some-word [append barnyard some-word]
== [duck chicken cat dog]
foreach indirect-word barnyard [
print [indirect-word do reduce [indirect-word]]
If you want to keep something, you have to remember where you
put it, one way or another!
> PS the random function always picks the items from the list
> in the SAME order. The reason I tried the random function
> is to avoid that. What am i doing wrong??
Try using the /SEED refinement to RANDOM.
Programming languages: compact, powerful, simple ...
Pick any two!