我想用一组键和值初始化一个数组,这样可以更改值但不能添加新键。
问问题
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 回答