从Tcl返回多个嵌套字典
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Tcl返回多个嵌套字典相关的知识,希望对你有一定的参考价值。
我有一个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返回两个词典的推荐方法是什么?
谢谢。
答案
这应该工作:
return [list $cktElementAttr $elementMap]
然后,在调用者处,您可以将返回值分配给列表:
set theDictionaries [makeCircuitData ...]
或者将它们分配给不同的变量:
lassign [makeCircuitData ...] cEltAttr elmMap
在Tcl 8.4或更早版本(已过时!),您可以(ab)使用foreach
来完成lassign
的工作:
foreach {cEltAttr elmMap} [makeCircuitData ...] break
文档:break,foreach,lassign,list,return,set
以上是关于从Tcl返回多个嵌套字典的主要内容,如果未能解决你的问题,请参考以下文章