在zsh中,将散列作为参数传递

在zsh中,将散列作为参数传递,zsh,Zsh,向函数传递散列的正确/惯用方法是什么 我有点偶然发现这一点,但不确定这有多干净,或者是否有任何陷阱 typeset -A hash hash=(a sometext b moretext) foo hash foo() { typeset -A mhash mhash=( ${(Pkv)1} ) } p标志解释结果(在本例中,$1包含一个参数名)。由于这导致只获取值而不获取键,因此我使用“kv”来获取键和值 这是正确的方法,还是有别的方法。顺便说一句,由于我在实际程序中传递数组和散

向函数传递散列的正确/惯用方法是什么

我有点偶然发现这一点,但不确定这有多干净,或者是否有任何陷阱

typeset -A hash
hash=(a sometext b moretext)

foo hash

foo() {
  typeset -A mhash
  mhash=( ${(Pkv)1} )
}
p标志解释结果(在本例中,$1包含一个参数名)。由于这导致只获取值而不获取键,因此我使用“kv”来获取键和值


这是正确的方法,还是有别的方法。顺便说一句,由于我在实际程序中传递数组和散列,我不想使用“$*”或“$@”

我尝试了一点,我不确定除了在函数上使用$@之外还有其他方法

这些问题的可能答案(面向bash):


事实上,当您开始需要在shell脚本中使用数组,甚至更糟的是关联数组时,也许是时候切换到更强大的脚本语言,如perl或python了。
如果你不为自己做这件事,那就在6个月后为你/为你的继任者做吧