如何在Tcl中设置嵌套字典中的条目值?

时间:2012-08-20 10:26:49

标签: tcl

在此dict for示例中:

如何更改字段,姓氏,街道,城市和电话字段的值?我试过这种方式:

dict for {id info} $employeeInfo {
    puts "Employee #[incr i]: $id"
    dict with info {
        puts "   Name: $forenames $surname"
        puts "   Address: $street, $city"
        puts "   Telephone: $phone"

        set [dict get $employeeInfo $id phone] 2341

        puts "   New Telephone: $phone"

    }
}

手机通过以下方式设置了新值:

set [dict get $employeeInfo $id phone] 12345

它不起作用。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

dict set命令可以设置嵌套字典的元素:

dict set employeeInfo $id phone 12345

请注意,封闭的dict for循环不会看到更改;它(概念上)在迭代之前获取字典的副本。

答案 1 :(得分:2)

phone元素位于info元素下,因此:

dict set employeeInfo $info phone 12345

规定您知道info元素。

更新

with上下文中,您可以直接设置手机元素,请尝试:

dict with info {
    ...
    dict set phone 12345
    ...
}