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

Re: behavior of arrays



Jack Saba <jack@icesat1.gsfc.nasa.gov> writes:

> But more often than not, I WANT the extra dimension to be lost, 
> or at least I want IDL to be willing to ignore it where appropriate.
> Consider this unrealistic example that nevertheless illustrates a 
> problem that occurs all too often in IDL:
> 
> IDL> x=findgen(100)
> IDL> ijk=where(x eq 10)
> IDL> for i=ijk,99 do print, i
> % Expression must be a scalar in this context: I.
> % Execution halted at:  $MAIN$                 
> 
> I could have written i=ijk[0],99, or i=REFORM(ijk),99 to avoid the 
> error. But it shouldn't be necessary -- this should be handled 
> transparently.

It is handled transparently.  If you want a scalar, write ijk[0].
This works even where ijk is *indeed* a scalar.

This is, BTW, about the only way to check for the result of "where" in a
useful way:
w = where(x)
if (w[0] lt 0)
...


-- 
David Kastrup                                     Phone: +49-234-700-5570
Email: dak@neuroinformatik.ruhr-uni-bochum.de       Fax: +49-234-709-4209
Institut für Neuroinformatik, Universitätsstr. 150, 44780 Bochum, Germany