Question on the get-word concept
I can make this work, but I don't know how to explain it to someone, that is, what terminology to use, and how to explain what is happening. Here is a two-dimensional array, and two words that I will use as subscripts: >> array1: [ ['a1' 'a2' 'a3'] ['b1' 'b2' 'b3'] ['c1' 'c2' 'c3'] ] == [['a1' 'a2' 'a3'] ['b1' 'b2' 'b3'] ['c1' 'c2' 'c3']] >> ix1: 2 == 2 >> ix2: 2 == 2 I know I can refer to the middle of the middle row (item b2) with the 'slash' notation: >> probe array1/2/2 'b2' == 'b2' I thought at first that I could just substitute the subscripts for the integers, as follows: >> probe array1/ix1/ix2 ** Script Error: Invalid path value: ix1 ** Where: halt-view ** Near: probe array1/ix1/ix2 That didn't work, so I figured out the 'get-word' concept and can do this: >> probe array1/:ix1/:ix2 'b2' == 'b2' So that's fine, and I also can use the 'pick' function: >> probe pick pick array1 2 2 'b2' == 'b2' >> probe pick pick array1 :ix1 :ix2 'b2' == 'b2' BUT, I ALSO can use this: >> probe pick pick array1 ix1 ix2 'b2' == 'b2' I don't know how to explain to someone why using just the subscript words works in the 'pick' example immediately above but NOT in the 'slash' example farther back. I am wondering if someone else can explain. Thank you.
posted by: Steven White 6-Feb-2015/16:01:25-8:00
>> array1: [ ['a1' 'a2' 'a3'] ['b1' 'b2' 'b3'] ['c1' 'c2' 'c3'] ] == [['a1' 'a2' 'a3'] ['b1' 'b2' 'b3'] ['c1' 'c2' 'c3']] >> ix1: 2 == 2 >> ix2: 2 == 2 >> array1/(ix1)/(ix2) == 'b2' >>
posted by: kealist 6-Feb-2015/16:23:20-8:00
Rebol2: >> array1: [ix1: 1] == [ix1: 1] >> array1/ix1 ** Script Error: Invalid path value: ix1 >> object1: make object! [ix1: 1] >> object1/ix1 == 1 Rebol 3: >> array1: [ix1: 1] >> array1/ix1 == 1 with the plain word! it's looking for a path inside the object! / block! . Using paren! or get-word! gets the value as an integer! so it's using a number index
posted by: kealist 6-Feb-2015/16:30:05-8:00
Steve, The characters in a path are not evaluated, unless you do something to force the interpreter to evaluate them (i.e., as words which evaluate to values). The the get-word syntax, and the parentheses force the interpreter to perform that evaluation.
posted by: Nick 7-Feb-2015/0:31:29-8:00
|