Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Is there an idiom for converting an array to an associative array?
- X-seq: zsh-workers 19383
- From: Matt Armstrong <matt@xxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxx
- Subject: Re: Is there an idiom for converting an array to an associative array?
- Date: Sat, 17 Jan 2004 18:59:43 -0800
- In-reply-to: <1040116042310.ZM28857@xxxxxxxxxxxxxxxxxxxxxxx> (Bart Schaefer's message of "Fri, 16 Jan 2004 04:23:10 +0000")
- Mailing-list: contact zsh-workers-help@xxxxxxxxxx; run by ezmlm
- References: <87vfndnnwe.fsf@xxxxxxxxxxxxxx> <1040116042310.ZM28857@xxxxxxxxxxxxxxxxxxxxxxx>
Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> writes:
> On Jan 15, 9:05am, Matt Armstrong wrote:
> }
> } I'm looking for an idiom that will convert the array (a b c) into
> } (a "" b "" c "") so I can assign it easily to an associative array.
>
> As it happens ...
>
> typeset "assoc[${^array[@]}]=''"
>
> should do that particular thing quite effectively, provided that none
> of the values of $array is * or @.
Thanks, I'll give it a whirl, and then study it for a couple of hours
to figure out how it works. :-)
> } Right now I've got ugliness like this:
> }
> } array=(a b c)
> } set -A assoc
>
> That should be "typeset -A assoc". "set -A" means something entirely
> different.
I jumped to "To create an empty array (including associative arrays)"
in the text below:
Associative arrays must be declared before assignment, by using:
typeset -A name
When name refers to an associative array, the list in an assignment is
interpreted as alternating keys and values:
set -A name key value ...
name=(key value ...)
Every key must have a value in this case. Note that this assigns to
the entire array, deleting any elements that do not appear in the list.
To create an empty array (including associative arrays), use one of:
set -A name
name=()
This is from Debian Linux's packaging of zsh 4.0.8
--
matt
Messages sorted by:
Reverse Date,
Date,
Thread,
Author