Zshの連想配列にスペースがあるキーの設定

Zshの連想配列にスペースがあるキーの設定

Bash(4以上)に連想配列がある場合は、dictその値を次のように設定してdict[apple count]=1使用できます${dict[apple count]}。 Zshはキー名にスペースを許可しますか?dict[apple count]=1Zshでは動作しないので、Zshの構文が異なるようです。私がしたいことをしません。キーとしてdict["apple count"]=1使用する代わりに、引用符をキーの一部として使用します。apple count"apple count"

答え1

Zsh は任意の文字列をキーとして受け入れます。問題はパーサーにあります。

キーを設定するには変数を使用できます。

typeset -A dict
key='apple count'; dict[$key]=1
key=']'; dict[$key]=2
key=''; dict[$key]=3
printf %s\\n "${(k@)dict}"

鍵の取り消しが難しいです。

答え2

(醜い)回避策は、「一般配列に要素を追加する」構文を使用することです。

dict+=('apple count' 1)

Zsh は連想配列の属性を保持するので (1 つで宣言する限り)dict['apple count']値が存在する場合は更新します。 Zsh 5.5以降、あまり醜い方法は次のとおりです。

dict+=(['apple count']=1 ['orange count']=3)

関連情報