キーと値のセットを使用して配列を初期化し、値を変更できても新しいキーを追加できないようにしたいと考えています。
質問する
1410 次
2 に答える
5
直接行う方法はないようです。代わりに、キー (インデックス) を持つ読み取り専用の連想配列を、値を保持する別の非読み取り専用配列に入れることができます。
この方法では、フロント アレイに新しいキーを追加する方法がなく、バック アレイに新しいキーを追加することは可能ですが、フロント アレイ キーを介して到達することはできません。
このようなもの:
declare -r -A front=([a]=0 [b]=1 [c]=2)
declare -a back=(alpha beta gamma)
# Read
echo "${back[front[a]]}"
# Write
back[front[a]]="ALPHA"
# Iterate
for k in "${!front[@]}"; do echo "$k = ${back[front[$k]]}"; done
これを関数インターフェイスにラップできます。
于 2013-11-04T11:02:06.973 に答える
1
ビルトインを使用しreadonly
て、完全に読み取り専用としてマークします。
$ declare -A x
$ x=([foo]=hello [bar]=world)
$ readonly -A x
$ x[baz]=zap
bash: x: readonly variable
しかし、そうすると、既存の値を変更する能力も失われてしまいます。
お探しの機能は存在しません。
于 2013-11-04T10:53:26.277 に答える