我有一个Tcl proc,可以从一个大文件中创建两个字典。它是这样的:
...
...
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 procs返回两个词典的推荐方法是什么?
感谢。
答案 0 :(得分:2)
这应该有效:
return [list $cktElementAttr $elementMap]
然后,在调用者处,您可以将返回值分配给列表:
set theDictionaries [makeCircuitData ...]
或将它们分配给不同的变量:
lassign [makeCircuitData ...] cEltAttr elmMap
在Tcl 8.4或更早版本(已过时!)中,您可以(ab)使用foreach
完成lassign
的工作:
foreach {cEltAttr elmMap} [makeCircuitData ...] break