let me rephrase that
Rob Cozens
rcozens at pon.net
Tue Feb 24 10:13:30 EST 2004
>Do you have a way to explain it more?
Tom,
First & easiest: One can construct a three dimensional array with
words, items, and lines: word z of item y of line x of myArray =
myArray[x,y,z].
Of course this supposed the contents of myArray do not include space,
comma, or return. And this will not work for arrays with empty
elements, as an empty word is non sequitur in xTalks.
Something more robust and supporting more dimensions would go along
the lines of:
on setArrayValue @theArray,theValue,dimension1,dimension2,dimension3,dimension4
put numToChar(28) into dimension1Delimiter
put numToChar(29) into dimension2Delimiter
put numToChar(30) into dimension3Delimiter
put numToChar(31) into dimension4Delimiter
set the itemDelimiter to dimension1Delimiter
put item dimension1 of theArray into firstDimension
set the itemDelimiter to dimension2Delimiter
put item dimension2 of firstDimension into secondDimension
set the itemDelimiter to dimension3Delimiter
put item dimension3 of secondDimension into thirdDimension
set the itemDelimiter to dimension4Delimiter
put theValue into item dimension4 of thirdDimension
set the itemDelimiter to dimension3Delimiter
put thirdDimension into item dimension3 of secondDimension
set the itemDelimiter to dimension2Delimiter
put secondDimension into item dimension2 of firstDimension
set the itemDelimiter to dimension1Delimiter
put firstDimension into item dimension1 of theArray
end setArrayValue
function theArrayValue @theArray,dimension1,dimension2,dimension3,dimension4
put numToChar(28) into dimension1Delimiter
put numToChar(29) into dimension2Delimiter
put numToChar(30) into dimension3Delimiter
put numToChar(31) into dimension4Delimiter
set the itemDelimiter to dimension1Delimiter
put item dimension1 of theArray into firstDimension
set the itemDelimiter to dimension2Delimiter
put item dimension2 of firstDimension into secondDimension
set the itemDelimiter to dimension3Delimiter
put item dimension3 of secondDimension into thirdDimension
set the itemDelimiter to dimension4Delimiter
return item dimension4 of thirdDimension
end theArrayValue
A couple of notes:
If I used multi-dimension arrays to any extent, I would refine the above:
* Dimension delimiters could be passed or stored in a local or global variable
* Handlers could be generalized to handle as many dimensions as are
passed to them
* The logic seems to me a prime candidate for recursion.
Note that if one is dealing with numeric arrays (ie: content is
limited to "0" - "9", plus "." & "-"), all other characters are
available as delimiters; so one could in theory support numeric
arrays of over 200 dimensions.
--
Rob Cozens
CCW, Serendipity Software Company
http://www.oenolog.net/who.htm
2
"And I, which was two fooles, do so grow three;
Who are a little wise, the best fooles bee."
from "The Triple Foole" by John Donne (1572-1631)
More information about the use-livecode
mailing list