从 Tcl 返回多个嵌套字典



我有一个Tcl过程,可以从一个大文件创建两个字典。它是这样的:

...
...
proc makeCircuitData {spiceNetlist} {
 #read the spiceNetlist file line by line
 # create a dict with multilevel nesting called elementMap that will have the following structure:
 # elementMap key1 key2 value12
 # elementMap keyA keyB valueAB
 # and so on
 # ... some other code here ...
 # create another dict with multilevel nesting called cktElementAttr that will have the following structure:
 # cktElementAttr resistor leftVoltageNode1 rightVoltageNode1 resValue11
 # cktElementAttr resistor leftVoltageNode2 rightVoltageNode2 resValue12
 # cktElementAttr inductor leftVoltageNode2 rightVoltageNode2 indValue11
 # cktElementAttr inductor leftVoltageNode2 rightVoltageNode2 indValue12
 # cktElementAttr capacitor leftVoltageNode2 rightVoltageNode2 capValue11
 # ... so on...   
}

我想返回这两个嵌套字典: cktElementAttr 和 elementMap 来自上述类型的过程,因为这两个字典被我的程序的其他部分使用。

从 Tcl 进程返回两个字典的推荐方法是什么?

谢谢。

这应该有效:

return [list $cktElementAttr $elementMap]

然后,在调用方,您可以将返回值分配给列表:

set theDictionaries [makeCircuitData ...]

或将它们分配给不同的变量:

lassign [makeCircuitData ...] cEltAttr elmMap

在 Tcl 8.4 或更早版本(已经过时!(中,您可以(滥用(使用 foreach 来完成lassign的工作:

foreach {cEltAttr elmMap} [makeCircuitData ...] break

文档:破福里奇,拉西格,列表返回设置

最新更新