Re: forcing variable definition in IDL? [message #24966 is a reply to message #24876] |
Tue, 01 May 2001 13:26   |
William Daffer
Messages: 34 Registered: February 1999
|
Member |
|
|
"Liam E. Gumley" <Liam.Gumley@ssec.wisc.edu> writes:
> William Daffer wrote:
>>
>> davidf@dfanning.com (David Fanning) writes:
>> [...]
>>
>>> Don't bother. IDL scalars *are* single element arrays:
>>>
>>> IDL> a=5
>>> IDL> a[0] = 6 & Print, a
>>>
>>
>> Um... Not true.
>>
>> IDL> a=['foo|bar']
>> IDL> print,strsplit(a,'|',/extract)
>> % STRTOK: Expression must be a scalar in this context: STRING.
>> % Execution halted at: STRSPLIT 24
>> /usr/local/rsi/idl_5.3/lib/strsplit.pro
>> % $MAIN$
>> IDL> retall
>> IDL> print,strsplit(a[0],'|',/extract)
>> foo bar
>> IDL>
>>
>> There are some other RSI supplied code where one sees this behavior.
>>
>> By the way, this is idl 5.3. I haven't checked idl 5.4.
>
> An array with one element is an *array*, i.e., it has one dimension:
>
> IDL> a = [25]
> IDL> help, a
> A INT = Array[1]
> IDL> print, size(a, /n_dimensions)
> 1
>
> A single subscripted array element is a *scalar expression*, i.e., it
> has no dimensions:
>
> IDL> a = [1, 2, 3, 4, 5]
> IDL> help, a[0]
> <Expression> INT = 1
> IDL> print, size(a[0], /n_dimensions)
> 0
>
> A scalar may be treated as though it were a single subscripted array
> element. However, as shown above, a scalar expression has no dimensions:
>
> IDL> a = 100
> IDL> help, a
> A INT = 100
> IDL> help, a[0]
> <Expression> INT = 100
> IDL> print, size(a, /n_dimensions)
> 0
> IDL> print, size(a[0], /n_dimensions)
> 0
>
> The implementer of STRTOK (which is called by STRSPLIT) is therefore
> checking for an input argument which has no dimensions.
>
> Cheers,
> Liam.
> http://cimss.ssec.wisc.edu/~gumley/
Um... so you're agreeing with me when I say that David's remark is
untrue?
whd
--
Outside of a dog a book is man's best friend.
Inside of a dog it's too dark to read
Groucho Marx
|
|
|