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