Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: local arrays



Phil Pennock wrote:
> The scripts I write are liable to be modified by others.  So the purpose
> of stuff should be clear.  Nice clean explicit statements of what a
> variable is help.  So integers get declared as such, etc.  And if that
> adds type-checking, all the better.

In that case, do

local arr
arr=()

wherever necessary.  Now it even looks more like perl :-).  But
type-checking's a bit of chimera here:  there are many cases where
zsh will silently store a scalar into arr.  It does get the behaviour
of a subsequent 'arr[1]=foo' right, however: for example,

% unset arr
% arr[1]=foo arr[2]=foo
% print $arr
foo foo
% unset arr
% local arr
% arr[1]=foo arr[2]=foo
% print $arr
ffooo

In the first case it guesses it has to be an array, in the second it's
already been created as a scalar.  I suppose that's more or less what
you're worried about, in which case I recommend what I wrote above:  I
sometimes do that myself.

-- 
Peter Stephenson <pws@xxxxxxxxxxxxxxxxx>       Tel: +39 050 844536
WWW:  http://www.ifh.de/~pws/
Dipartimento di Fisica, Via Buonarroti 2, 56127 Pisa, Italy



Messages sorted by: Reverse Date, Date, Thread, Author