Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: get keys of an associative array?
On Sun, Mar 26, 2017 at 08:34:46PM +0100, Peter Stephenson wrote:
> On Sun, 26 Mar 2017 21:18:28 +0200
> Jens Elkner <jel+zsh@xxxxxxxxxxxxxxxxxxx> wrote:
> > I've KSH_ARRAYS (beside KSH_GLOB KSH_TYPESET KSH_OPTION_PRINT) set,
> > however, getting the key set of an array via ${!vname[@]} (as usually
> > done within ksh or bash) does not work (bad substitution).
>
> That's never been implemented; it may be too far away from how zsh works
> to do usefullly.
Ah ok, thought initially, can't be so hard to check, whether the first
char after a '${' is a '#' or '!' or ' ' ... Life would be much easier ;-)
> > Couldn't find anything else, except the @k flag, but this doesn't work
> > as well, e.g.
> >
> > unset A; typeset -A A; A['a']=1; A['b']=2; A['c']=3 ; print "${(@k)A}"
> >
> > should print 'a b c' but prints '3'. Bug, feature? Hmmm, any hints?
>
> You need "${(k)A[@]}" in ksh mode, but I'm not sure why the (@) flag
> doesn't do the trick.
Ahh, yes - this works. Also found out, that if I 'setopt no_KSH_ARRAYS'
"${(@k)A}" works as well (but is inconvinient).
> As it's an associative array you get the keys
> back unordered.
Yepp. That's expected for hash sets.
Thanx a lot,
jel.
--
Otto-von-Guericke University http://www.cs.uni-magdeburg.de/
Department of Computer Science Geb. 29 R 027, Universitaetsplatz 2
39106 Magdeburg, Germany Tel: +49 391 67 52768
Messages sorted by:
Reverse Date,
Date,
Thread,
Author