列表 - 附加到嵌套字典

如果我们有这本词典:

set alpha {alice {items {}} bob {items {}} claudia {items {}} derek {items {}}}

并且想要将 forkpeanut 添加到 Alice 的项目中,此代码将无效:

dict lappend alpha alice items fork peanut
dict get $alpha alice
# => items {} items fork peanut

因为命令不可能知道密钥令牌的结束位置以及要附加列表的值的开始,所以该命令仅限于一个密钥令牌。

附加到内部字典的正确方法是:

dict with alpha alice {
    lappend items fork peanut
}
dict get $alpha alice
# => items {fork peanut}

这是有效的,因为 dict with 命令允许我们遍历嵌套字典,其数量级别与我们提供的关键令牌数量相同。然后它创建与该级别上的键名称相同的变量(此处只有一个:items)。变量初始化为字典中相应项的值。如果我们更改该值,则更改的值将用于在脚本结束时更新字典项的值。

(注意,当命令结束时,变量仍然存在。)