第三方软件,让我们命名为3RD已嵌入
TCL
。
3RD中的某些函数执行TCL或创建
TCL objects
。在执行过程中按特定顺序生成多个命令(事件?),例如:
对于每个命令通风口,还会创建新变量或现有变量更改其状态。 用户并不完全了解上述命令名称。 我猜想在 3RD 中调用的每个命令,都会发送包含一组 TCL 对象(命令、过程、事件、变量)的包以供最终用户(我)使用。然后我可以编写脚本调用 3RD 创建的每个命令通风口。
我的问题是:我可以按顺序获取这些命令通风口名称吗?
info commands
或info procs
不提供这种可能性
如果您想让事物保持特定的顺序,您可以将它们放入列表或字典中(字典保留首次创建密钥的顺序)。当您使用 C(或 C++)时,列表可能是最方便的选择,因为您可以将标志
TCL_APPEND_VALUE | TCL_LIST_ELEMENT
传递到 Tcl_SetVar2Ex()
以获得 lappend
。
如果 C 代码没有建议事物名称的顺序,则必须在 Tcl 中构建该列表,可能使用
lappend
或 list
。我不确定如何决定将事物放入的顺序的标准是什么(除了在开头有一个 ...Init 和 ...Start 以及在末尾有一个 ...Out );我真的不知道你的问题空间。
一旦你有了一个列表,你就可以这样做:
foreach cmd $theList {
$cmd; # In this case, you don't need eval for just command names
}
如果您想传递不同的额外参数,事情可能会变得更复杂。或者更复杂。我们需要更多信息才能有效提供帮助。