[REBOL] simple beginners Q: need to assign variable value to variable Re:

2000-05-31 Thread ryanc

Probably everyone with programming experience will have the same problem your
having when trying to learn REBOL.  In REBOL there is no need for this
activity, thats why its so hard to make it do that. REBOL's series type is
what you need to focus on to solve this problem. It is an amazing thing.
Unlike an array, it can hold anything, even another series. This little
example will demostrate:

stuff: [ [0] [1 2 3] ["a" "b" "c"] [4 5] ]

foreach container stuff [
foreach thing container [
print thing
]
]

;You can use pick to extract individual values when needed. Example:
print pick stuff 2
print pick pick stuff 2 3

;or a easier to understand version
print container: pick stuff 2
print thing: pick container 3

There is also a facility for doing array's, aptly called array, but I think
series are most important to learn at first, so you dont get trapped into
legacy programming processes.  Plus I find arrays not as much fun to use
either.

--Ryan

[EMAIL PROTECTED] wrote:

 First let me tell you I took a C++ course(1301) years ago and haven't done
 too much programing since.  I'm just installed a small LAN and am trying
 to learn rebol for maitnance and fun
 Now my problem...I need to make the value of var1:test1 into the name of a
 new variable that can hold a value like test1:4.  Then the programs loops
 and var1:test2 and I want test2:some#.  I can make the value of var1
 increment I just can't figure out how to make test#:some# from var1:test#.
 Thanks for any help, I looked all over the sites documentation but didn't
 see what I needed...if its on there just point me in the direction to look
 if its easier.  Thanks, Bryce

 --

 Why is College Club the largest and fastest growing college student site?
 Find out for yourself at http://www.collegeclub.com




[REBOL] simple beginners Q: need to assign variable value to variable Re:

2000-05-31 Thread icimjs

Hi Bryce,

I'm not sure I understand your question. The way I interpret what you are
saying, the following mechanisms may prove useful.

Evaluating the following for loop 

(Note here I am using to set-word!)
 for i 1 10 1 [ print mold to set-word! join 'var [i] ]

results in

var1:
var2:
var3:
var4:
var5:
var6:
var7:
var8:
var9:
var10:

To assign a value use set

(Note here I am using to word!, not to set-word! You could also use
set-word! but its not necessary)
 for i 1 10 1 [ 
 set to word! join 'var [i] i 
 print [ 
   to word! join 'var [i] 
   get to word! join 'var [i]
 ]
   ]


Evaluating this for loop generates the following output:

var1 1
var2 2
var3 3
var4 4
var5 5
var6 6
var7 7
var8 8
var9 9
var10 10

The varN words we created are available outside of the for loop:

 var1
== 1
 var2
== 2
 var3
== 3

Or to automate the process:

 for i 1 10 1 [ print [mold to word! join 'var [i] " " get to word! join
'var [i] ] ]
var1   1
var2   2
var3   3
var4   4
var5   5
var6   6
var7   7
var8   8
var9   9
var10   10

We can unset the varNs as well:

 for i 1 10 1 [ unset to word! join 'var [i] ]

Now, var1 no longer exists

 var1
** Script Error: var1 has no value.
** Where: var1

Another mechanism that may come in handy:

Here I set the word test to the set-word! value var1.

 i: 1 test: to set-word! join 'var [i]
== var1:
 :test
== var1:

When I attempt to get the value of var1, I generate an error because var1
was not assigned a value:
 get :test
** Script Error: var1 has no value.
** Where: get :test

Now I set the value of var1 to 10. It works like this. REBOL dereferences
the word test and retrieves its value, which is the set-word! var1:. A
set-word! is like a magnet, it attaches itself to whatever value it finds
next. That value is 10:
 test 10
== 10

The word test continues to evaluate to var1, as it did before:
 :test
== var1:

We can now safely retrieve the value of var1:
 get :test
== 10

Or to illustrate it differently:

 unset 'var1
 var1
** Script Error: var1 has no value.
** Where: var1
 i: 1 test: to set-word! join 'var [i]
== var1:
 test 10
== 10
 var1
== 10

A final remark. I would normally just collect my stuff in a block, instead
of using set-words:


 for i 1 10 1 [
  append [] i
   ]
== [1 2 3 4 5 6 7 8 9 10]

or if you want to later retrieve the block:

 result-block: for i 1 10 1 [
append [] i
   ]
== [1 2 3 4 5 6 7 8 9 10]
 result-block
== [1 2 3 4 5 6 7 8 9 10]



At 12:43 PM 5/31/00 -0700, you wrote:
First let me tell you I took a C++ course(1301) years ago and haven't done
too much programing since.  I'm just installed a small LAN and am trying
to learn rebol for maitnance and fun
Now my problem...I need to make the value of var1:test1 into the name of a
new variable that can hold a value like test1:4.  Then the programs loops
and var1:test2 and I want test2:some#.  I can make the value of var1
increment I just can't figure out how to make test#:some# from var1:test#.
Thanks for any help, I looked all over the sites documentation but didn't
see what I needed...if its on there just point me in the direction to look
if its easier.  Thanks, Bryce


--

Why is College Club the largest and fastest growing college student site?
Find out for yourself at http://www.collegeclub.com





;- Elan  [: - )]