zsh-workers
 help / color / mirror / code / Atom feed
* 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).