我有一个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
文档:破福里奇,拉西格,列表返回设置