Tcl 有没有办法用一个命令创建嵌套的dict?

Tcl 有没有办法用一个命令创建嵌套的dict?,tcl,Tcl,创建按如下方式打印的词典: set my_dict [dict create a [dict create aa AA] b B] 它是一个嵌套字典: ==> a {aa AA} b B 有没有一种方法可以更优雅地创建嵌套的dict,如下所示: dict get my_dict a aa ==> AA 显然可以编写这样的命令,但是在任何库中都有类似的东西吗?尝试天真地将dict指定为{a{aa aa}BB}失败了,因为无法从简单的字符串“aa aa”中区分子字典。在tcl中为

创建按如下方式打印的词典:

set my_dict [dict create a [dict create aa AA] b B]
它是一个嵌套字典:

==> a {aa AA} b B
有没有一种方法可以更优雅地创建嵌套的dict,如下所示:

dict get my_dict a aa 
==> AA

显然可以编写这样的命令,但是在任何库中都有类似的东西吗?尝试天真地将dict指定为{a{aa aa}BB}失败了,因为无法从简单的字符串“aa aa”中区分子字典。在tcl中为这样的东西编写解析器,乍一看似乎效率很低,在语言的核心或者在用C编写的库中,使用某种语法扩展,这样的特性会更好

只需将其创建为文字列表:

set my_dict [nested_dict_create {a «aa AA» b B}]
AA是否可以被引用:作为单个单词并不重要。

如果您选中,您将看到可以通过在一个命令中提供多个键来设置嵌套字典键。但是,这仅适用于单个嵌套密钥链。然后不能继续提供其他第一级密钥。 换句话说,您可以使用两个单独的命令实现示例的结果:

% set mydict {a {aa {AA}} b BB}
a {aa {AA}} b BB
% dict get $mydict a aa
AA

啊,我明白了,tcl根本无法从一个键“aa”和一个值“aa”的字典中分辨字符串“aa aa”。我知道这可以用dict或字符串来表示,但在语言中它们是无法区分的。所以我想如果我想要某种类型的“类型化记录”,我必须在字符串中显式地包含类型标记,比如:{a{string{a AA}}}b{dict{a AA}}}}}@budden73如果你想要类型化记录,你需要显式地将类型描述保存在某个地方,因为Tcl的内部类型很大程度上隐藏了自己。如果你做了很多,考虑使用RLYJSON,它是TCL的一个高效的JSON库(并且它支持的类型在语法中是显而易见的)。
dict set my_dict a aa AA
dict set my_dict b B

dict get $my_dict
> output: a {aa AA} b B
dict get $my_dict a aa
> output: AA