On 21/05/2009, at 11:16 , Bill Steele wrote:
>>
>> On Thu, May 21, 2009 at 9:39 AM, Bill Steele <[log in to unmask]>
>> wrote:
>>>
>>> set recordList to {}
>>> set oneRecord to {foo:1, bar:"hello"}
>>> set end of recordList to oneRecord
>>> set twoRecord to {foo:2, bar:"Goodbye"}
>>> set end of recordList to twoRecord
>>> repeat with aRecord in recordList
>>> if foo of aRecord is 1
>>> set stuffIneeded to aRecord
>>> end if
>>> end repeat
>>> --> returns the entire list.
>>
>> Not OMM. It does, however, return a reference to the first item of
>> the list ("item 1") rather than the actual record.
>>
>>
>>> set stuffIneeded to CONTENTS of aRecord
>>
>> yup.
>>
>>> Fairly easy to figure out (I managed), but not the way ordinary
>>> lists
>>> behave.
>>
>> No, it's exactly the way ordinary lists of *references* behave,
>> whether the referenced items are records or application objects - or
>> other lists. This exhibits the same behavior.
>>
>> repeat with aList in { { 1, 2, 3 }, { 4, 5, 6 } }
>> if item 1 of aList is 1 then
>> set stuffIneeded to aList
>> end if
>> end repeat
>> stuffIneeded
>
> This is getting interesting. I've done a lot of stuff with hunting
> through ordinary lists and would have disagreed with you, but I
> experimented a bit:
>
> set aList to {1, 2, 3}
> repeat with oneNumber in aList
> display dialog oneNumber --> works, 1, 2., 3
> if oneNumber is 2 then
> display dialog oneNumber --> zilch
> end if
> end repeat
>
> but
>
> set aList to {1, 2, 3}
> repeat with i from 1 to 3
> set oneNumber to item i of aList
> if oneNumber is 2 then
> display dialog oneNumber --> 2
> end if
> end repeat
>
> the "in list" syntax doesn't do comparisons, but "item of" does.
> Does that qualify as problematical?
> --
>
> Bill Steele
> [log in to unmask]
Bill,
it is not that in list does not do comparisons it is that in list does
not deal with the elements but with a reference to the element.
so in your first script, the line "if oneNumber is 2 then" gets
translated to "if a reference to item 1 of aList is 2 then"
A reference is that a pointer not a value. The pointer is not 2, it
points to 2.
Deivy Petrescu
[log in to unmask]
|