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 <[email protected]> wrote:

From: Thomas McGrath III <[email protected]>
Subject: Re: Simple Arrays
To: "How to use Revolution" <[email protected]>
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
[email protected]

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
[email protected]
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
[email protected]
Please visit this url to subscribe, unsubscribe and
manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage
your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution




_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Jim Ault
Las Vegas



_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to