Paths, Arrays, Assignment and other bothersome things
[1/3] from: james:mustard at: 17-Dec-2001 14:00
Hi All, At present I am using the following to assign to an array: REBOL  grid: array/initial [8 8 8] false random/seed now for z -3 2 1 [ for y -3 2 1 [ for x -3 2 1 [ do reform join "grid/" [x + 5 "/" y + 5 "/" z + 5 ": random true"] ] ] ] print grid halt This works fine but seems to be a rather round-about way to achieve the assignment. Is there a better way? Ideally I would like to have used something like: -> grid/:x/:y/:z: random true but this only gives a get error. James.
[2/3] from: larry::ecotope::com at: 16-Dec-2001 19:01
Hi James, The problem is that the path notation does not allow an element to indicate both a GET and a SET. This will supposedly be fixed in the next version of REBOL. You could try: poke grid/:x/:y z random true ;only get-words in path or poke pick pick grid x y z random true or if the indices need to be calculated: poke pick pick grid x + 5 y + 5 z + 5 random true POKE and PICK are the native block element manipulation functions and produce faster code than the path notation. BTW FOR is vary slow, it is better to use REPEAT or FOREACH when possible. HTH -Larry
[3/3] from: james:mustard at: 17-Dec-2001 17:39
Thanks for that - I was wondering if it was a bug or I was doing something in a non-rebol way :)