列表 - 附加到巢狀字典

如果我們有這本詞典:

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)。變數初始化為字典中相應項的值。如果我們更改該值,則更改的值將用於在指令碼結束時更新字典項的值。

(注意,當命令結束時,變數仍然存在。)