Re: bug? or how to distinguish between a Hash and an array of Hashes ? [message #83390 is a reply to message #83389] |
Mon, 04 March 2013 08:28   |
wlandsman
Messages: 743 Registered: June 2000
|
Senior Member |
|
|
The documentation for TYPENAME() explains that it is not exactly the same as SIZE(/TNAME)
"If Variable is a scalar object or a one-element object array, Result will be the object class name. If Variable is an object array with two or more elements, Result will be the IDL basic type name “OBJECT” [because each element of the object array could have a different class name]."
So with a scalar hash, TYPENAME() can return "HASH" but for an array it will return OBJREF (not "OBJECT" as the documentation wrongly says). --Wayne
On Monday, March 4, 2013 11:24:49 AM UTC-5, David Fanning wrote:
> David Fanning writes:
>
>
>
>>
>
>> wlandsman writes:
>
>>
>
>>> You could use the TYPENAME function to distinguish the two variables
>
>>>
>
>>> IDL> print,typename(a)
>
>>> HASH
>
>>> IDL> print,typename(c)
>
>>> OBJREF
>
>>>
>
>>> although I'm not sure why SIZE(/TNAME) doesn't give the same results.
>
>>
>
>> Oh, dear! Really!?
>
>
>
> I guess this is right, though, since there are no "type" codes for hash
>
> or list. They are objects, I guess, not real data types.
>
>
>
> Still, awfully confusing to explain to a new user not familiar with the
>
> "IDL Way". ;-)
>
>
>
> Cheers,
>
>
>
> David
>
>
>
>
>
> --
>
> David Fanning, Ph.D.
>
> Fanning Software Consulting, Inc.
>
> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>
> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
|
|
|