[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: forcing variable definition in IDL?



"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