ABC of arrays

Graham Samuel livfoss at mac.com
Wed Apr 1 22:48:17 CEST 2015


Richard, forgive me for just extracting a bit of your interesting mail. I see that the real issue is with the idea of sub-arrays, which have their own sets of keys. You emphatically do not get a list of all the keys of an array with subarrays in it from the ‘put the keys’ action. I modified your handler in just one respect: 

on mouseUp
   put "1" into tA[1]
   put "2.1" into tA[2][1]
   put "2.2" into tA[2]["surprise me, Jean"]
   put 3 into tA[3]
   put the keys of tA
   put the keys of tA
end mouseUp

and I got

3
1
2

So, the “surprise” key wasn’t represented - because it’s a sub-array of tA[2], I suppose. In fact your example is odd in a way, since you use the key [1] for example in the primary array and again in the sub array. These are different keys that just happen to use the same value. This makes my head hurt a bit.

So, following on another mail I just sent, I think people can get confused by sub-arrays and what ‘the keys’ actually looks at. More examples needed in the docs, perhaps.

Hope this is not seen as wilful misunderstanding - it’s not meant to be!

Graham

> On 1 Apr 2015, at 22:32, Richard Gaskin <ambassador at fourthworld.com> wrote:
> 
> 
> The "keys" should return a list of all keys, even when the value of any of them may be another array.
> 
> This is consistent with what you found:  your array gGeneralArray contain one element, and that element is another array.  You can also query the keys for the sub-array and obtain its keys, as you did.
> 
> Consider this much simpler example in which we have three keys, two of which have values that are not arrays and one of which has an array for its value:
> 
> on mouseUp
>   put "1" into tA[1]
>   put "2.1" into tA[2][1]
>   put "2.2" into tA[2][2]
>   put 3 into tA[3]
>   put the keys of tA
> end mouseUp
> 
> In my Message Box I get:
> 
> 3
> 1
> 2
> 
> ...showing that all keys are accounted for, even tA[2] where the value is another array.



More information about the use-livecode mailing list