* Is there an idiom for converting an array to an associative array?
@ 2004-01-15 17:05 Matt Armstrong
2004-01-16 4:23 ` Bart Schaefer
0 siblings, 1 reply; 4+ messages in thread
From: Matt Armstrong @ 2004-01-15 17:05 UTC (permalink / raw)
To: zsh-workers
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.
Right now I've got ugliness like this:
array=(a b c)
set -A assoc
for i in $array; do
assoc[$i]=""
done
Any pointers?
--
matt
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Is there an idiom for converting an array to an associative array?
2004-01-15 17:05 Is there an idiom for converting an array to an associative array? Matt Armstrong
@ 2004-01-16 4:23 ` Bart Schaefer
2004-01-18 2:59 ` Matt Armstrong
0 siblings, 1 reply; 4+ messages in thread
From: Bart Schaefer @ 2004-01-16 4:23 UTC (permalink / raw)
To: zsh-workers
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 @.
} 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.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Is there an idiom for converting an array to an associative array?
2004-01-16 4:23 ` Bart Schaefer
@ 2004-01-18 2:59 ` Matt Armstrong
2004-01-18 18:50 ` Bart Schaefer
0 siblings, 1 reply; 4+ messages in thread
From: Matt Armstrong @ 2004-01-18 2:59 UTC (permalink / raw)
To: zsh-workers
Bart Schaefer <schaefer@brasslantern.com> 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Is there an idiom for converting an array to an associative array?
2004-01-18 2:59 ` Matt Armstrong
@ 2004-01-18 18:50 ` Bart Schaefer
0 siblings, 0 replies; 4+ messages in thread
From: Bart Schaefer @ 2004-01-18 18:50 UTC (permalink / raw)
To: zsh-workers
On Jan 17, 6:59pm, Matt Armstrong wrote:
> Bart Schaefer <schaefer@brasslantern.com> writes:
>
> > typeset "assoc[${^array[@]}]=''"
>
> Thanks, I'll give it a whirl, and then study it for a couple of hours
> to figure out how it works. :-)
Given array=(a b c), X${^array}Y expands to XaY XbY XcY. Does that help?
> > } 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
[...]
> To create an empty array (including associative arrays), use one of:
>
> set -A name
"set -A name" is a form of assignment, not a form of declaration. Perhaps
the word "create" was poorly chosen in that bit of documentation (and that
remark is the only reason I'm still sending this to zsh-workers).
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-01-18 18:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-01-15 17:05 Is there an idiom for converting an array to an associative array? Matt Armstrong
2004-01-16 4:23 ` Bart Schaefer
2004-01-18 2:59 ` Matt Armstrong
2004-01-18 18:50 ` Bart Schaefer
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).