Simple Arrays
Jim Ault
jimaultwins at yahoo.com
Sun Jan 10 12:05:33 EST 2010
An array with one key and one element (value) is two dimensions
myArray[1][1] is three dimensions ( two keys and one element )
Again, Rev uses associative arrays.
Transpose means switching the numeric *values* for the numeric
*keys*. The keys must be sequential.
Excel transpose does not meant the same thing.
Excel array notation and functions operate differently.
Rev would use a 'table' with
item j of line i of tabularData
Jim Ault
Las Vegas
On Jan 10, 2010, at 8:55 AM, Michael Kann wrote:
> While trying to rassle these arrays to the ground I tried to
> transpose one. The following script doesn't work. Can anyone see
> why? (Need some fresh eyes).
> ------------------------------
> on mouseUp
>
> put 1 into myArray[1][1]
> put 2 into myArray[1][2]
> put 3 into myArray[2][1]
> put 4 into myArray[2][2]
> put myArray[2][1] into fld 1 -- works til here
>
> put transpose(myArray) into yourArray -- causes problem
> put yourArray[2][1] into fld 2
>
> end mouseUp
> -------------------
> From the dictionary:
>
> The array is a two-dimensional array variable whose elements are
> numbers, and whose keys are sequential numbers.
>
> It seems like the constraints have been met. In the above examples I
> assume the "elements" would be 1,2,3,4 ? Why would the elements be
> restricted to numbers? All we are doing is switching the two keys.
> -------------------------------------------------------------------
> Thomas,
>
> In answering the question concerning
>
> -- the 'best' way to enter Bob's data into an array --
>
> I think the usual concern is that you are given a set of data
> formatted in a certain way and then you have to shoehorn it into an
> array. If you want the final array to resemble an Excel spreadsheet
> (each piece of data gets its own row and column number) then the
> repeat loop I posted a few messages back would do it. We can call
> that the easiest way until someone posts an easier one.
>
>
>
> -----------------------
> Here's the code for populating an array:
>
> -----------------------
> -- as an example, put your 4 lines into fld 1
> -----------------------
> 1,A,Green
> 2,B,Blue
> 3,C,Orange
> 4,D,White
> -----------------------
> -- to get those 4 lines into a multi-dimensional
> -- array called myArray I think you need code
> -- like below (which you already know)
> -- There might be an easier way.
> -----------------------
> on mouseUp
> put fld 1 into v
> set itemDelimiter to comma
> put zero into countLine
> repeat for each line curLine in v
> add 1 to countLine
> put zero into countItem
> repeat for each item curItem in curLine
> add 1 to countItem
> put curItem into myArray[countLine][countItem]
> end repeat
> end repeat
> put myArray[1][2] into fld 2
> end mouseUp
> -----------------------
> -- will end up with "A" in fld 2
>
> -----------------------
>
>
>
>
>
>
>
>
> --- On Sun, 1/10/10, Thomas McGrath III <mcgrath3 at mac.com> wrote:
>
>> From: Thomas McGrath III <mcgrath3 at mac.com>
>> Subject: Re: Simple Arrays
>> To: "How to use Revolution" <use-revolution at lists.runrev.com>
>> Date: Sunday, January 10, 2010, 7:52 AM
>> Pardon my question, but I have
>> learned more about arrays in these four posts than I ever
>> thought about before:
>>
>> So given that I would want a multi-dimensional array where
>> theData[2][3] = "Blue" as in the examples provided, what is
>> the 'best' way to enter data into this array, or is the way
>> Bob did it the best way?
>>
>> Workflow:
>> First;
>>>> put "1"& comma& "A"&
>> comma& "Green"& return into theData
>>>> put "2"& comma& "B"&
>> comma& "Blue"& return after theData
>>>> put "3"& comma& "C"&
>> comma& "Orange"& return after theData
>>>> put "4"& comma& "D"&
>> comma& "White"& return after theData
>> Then ;
>> split theData with cr
>>
>> Would this get me theData[2][3] = "Blue" ??? I thought the
>> delimiter was TAB?
>>
>> Would this be better:
>> put "1"& tab& "A"& tab& "Green"& return
>> into theData
>>
>> OR is this all wrong and if so what is the 'best' way to
>> enter a lot data into a mutli-dimensional array to get these
>> results??
>> Thank you for this.
>>
>> Tom McGrath III
>> Lazy River Software
>> 3mcgrath at comcast.net
>>
>> iTunes Library Suite - libITS
>> Information and download can be found on this page:
>> http://www.lazyriversoftware.com/RevOne.html
>>
>> On Jan 9, 2010, at 9:37 PM, Phil Davis wrote:
>>
>>> Hi Bob,
>>>
>>> On 1/9/10 5:12 PM, Bob Sneidar wrote:
>>>> Hi all.
>>>>
>>>> Apparently I am not getting arrays AT ALL. I would
>> think that given:
>>>>
>>>> put "1"& comma& "A"&
>> comma& "Green"& return into theData
>>>> put "2"& comma& "B"&
>> comma& "Blue"& return after theData
>>>> put "3"& comma& "C"&
>> comma& "Orange"& return after theData
>>>> put "4"& comma& "D"&
>> comma& "White"& return after theData
>>>>
>>>> which would get me:
>>>> 1,A,Green
>>>> 2,B,Blue
>>>> 3,C,Orange
>>>> 4,D,White
>>>>
>>>
>>> Actually either of these:
>>>
>>> split theData with cr
>>> split theData by row -- where the
>> rowDelimiter is CR
>>>
>>> would get you this:
>>>
>>> theData[1] = "1,A,Green"
>>> theData[2] = "2,B,Blue"
>>> theData[3] = "3,C,Orange"
>>> theData[4] = "4,D,White"
>>>
>>>> I could then split by column (or by row I get
>> confused) and get a simple array where:
>>>> theData[1,1] = "1"
>>>> theData[1,2] = "A"
>>>> theData[2,1] = "2"
>>>> theData[4,3] = "White"
>>>>
>>>> And so forth. However, this is NOT the case!
>>>
>>> Right. Technically speaking, comma is not an array
>> index separator. Commas in our array keys help us
>> conceptually represent multiple array dimensions in our own
>> minds, but Rev sees an array with such keys as a simple
>> one-dimensional array with alphabetic keys (since commas are
>> not numerals).
>>>
>>> Until version 3.0, Rev couldn't handle true
>> multi-dimensional arrays. Since then, the thing that tells
>> Rev "this is a multi-dimensional array" is multiple keys per
>> element, with each key in its own bracket. Like this:
>>>
>>> theData[1][1] = "1"
>>> theData[1][2] = "A"
>>> theData[1][3] = "Green"
>>>
>>>
>>> Now do you see why 'transpose()' wouldn't work with
>> your array? In part it's because your keys aren't numeric -
>> they contain commas. (Also they have to be sequential
>> numbers.)
>>>
>>> Welcome to array re-education camp! ;-)
>>>
>>> Phil Davis
>>>
>>>
>>>> If it were, I could issue a command:
>>>>
>>>> put transpose(theData) into myArray
>>>>
>>>> and:
>>>> myArray[1,2] = 2
>>>> myArray[1,3] = 3
>>>>
>>>> and so on. If I got the entire row (I think
>> there's a function for that) then I would have effectively
>> gotten the column of the original data. Seems reasonable
>> eh?
>>>>
>>>> So can someone please explain to me why I cannot
>> get a simple x,y row,column grid-like array using these
>> simple commands? Revolution seems to think that the first
>> column MUST be the key! I would LIKE for revolution to
>> simply create it's OWN numerical keys and let my data be my
>> data. Maybe in the future add an argument to the split and
>> combine commands to tell it whether or not I WANT Revolution
>> to treat my first column as the key?
>>>>
>>>> If arrays worked like I described above, it would
>> be a simple matter to get a single column of an array, just
>> by transposing it and getting an entire row, instead of
>> writing complex repeat loops to get a column of data. Am I
>> missing something here?
>>>>
>>>> Thanks for any wisdom you can give. I can save
>> some helpful souls the trouble of responding by saying I am
>> capable of making repeat loops to accomplish this. I was
>> just hoping that maybe I was missing something and I can in
>> fact do what I thought I could.
>>>>
>>>>
>> Bob_______________________________________________
>>>> use-revolution mailing list
>>>> use-revolution at lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe
>> and manage your subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>>>
>>>>
>>>
>>> --Phil Davis
>>>
>>> PDS Labs
>>> Professional Software Development
>>> http://pdslabs.net
>>>
>>> _______________________________________________
>>> use-revolution mailing list
>>> use-revolution at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and
>> manage your subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>> _______________________________________________
>> use-revolution mailing list
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage
>> your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>
>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
Jim Ault
Las Vegas
More information about the use-livecode
mailing list