cc:  [email protected]  [email protected]
Subject: Re: Re: [ast-users] ksh93 returns "()" for "${a[@]}" if I clear an 
array  with a=( )
--------

> 
> On 10 July 2013 22:18, David Korn <[email protected]> wrote:
> > cc: [email protected]
> > Subject: Re: ksh93 returns "()" for "${a[@]}" if I clear an array with a=( )
> > --------
> >
> >> ksh93 returns "()" for "${a[@]}" if I clear an array with a=( )
> >
> >
> > a=()
> >
> > doesn't clear an array, it unsets a and creates an empty compound variable
> > (
> > )
> >
> > typeset -a a=()
> >
> > should clear an array.
> 
> This is not very intuitive. First variable a has already be declared
> as an array so the intuitive feeling would be that a=() resets it with
> an empty array. 2nd your interpretation assumes that the called
> function knows the array data type to reset it - which becomes a pain
> if you have hundreds of types defined and try to use a utility
> function which should reset an array of any of these types.
> 
> I'd better go for: a=() means reset the variable if variable a is
> either array or compound. If it isn't already a type of these make it
> a compound variable. If variable a is of type integer or string throw
> an error.
> This should make things more predictable.
> 
> Ced
> -- 
> Cedric Blancher <[email protected]>
> Institute Pasteur
> 

I changed this for the next alpha so that
        a=()
will preserve index and associative array attributes while unsetting the array.

However, it is not an error to redefine a simple variable as a compound 
variable.

David Korn
[email protected]
_______________________________________________
ast-users mailing list
[email protected]
http://lists.research.att.com/mailman/listinfo/ast-users

Reply via email to