我有一个TCL过程,该过程对返回的列表的已加载包进行函数调用。当我用llindex查询列表中的条目数时,它是准确的。但是,当我将该列表发送到填充Tk列表框的过程时,该列表没有条目。 llindex函数指出列表中的整数个数为零。对于一段代码,在我的主要代码中有:
set ents [pw::Grid getAll -type pw::Connector]
makeWindow . $ents
$ ents中包含17个元素。然后在我的 makeWindow 过程中,我有:
makeWindow {root args} {
label $base.targetDeltaTxt -text "Target Cell:"
entry $base.targetDelta -cursor {} -textvariable entry
...
set num_cons [expr ([llength $args]-1)]
...
}
$ num_cons为1,但发送时为17。在TCL中,向过程发送列表似乎会将所有列表元素连接成一行文本。为什么?
答案 0 :(得分:0)
您正在遇到这样一个事实,即proc的最后一个参数名为“ args”会引起特殊的行为。有关详细信息,请参见https://www.tcl.tk/man/tcl8.6/TclCmd/proc.htm。将参数从args
重命名为其他任何名称,例如ents
应该可以解决问题。