0
>> set signal_name [get_fanout abc_signal]
{xyz_blah_blah}
>> echo $signal_name
@142
>> set signal_name [get_fanout abc_signal]
{xyz_blah_blah}
>> echo $signal_name
@144
>>

我尝试了其他东西,比如 catch 等,并且在每个地方,它都会返回@number。我的目标是能够打印实际值而不是数字 - xyz_blah_blah。

我是 tcl 的新手。想了解,如果这是一个数组或指向数组的指针或类似的东西。当我用不同的命令尝试完全相同的事情时,它只返回一个值,然后它就可以工作了。这是一个新命令,它在括号中返回值。

请帮忙。谢谢。

4

1 回答 1

0

每个 Tcl 命令都会产生一个结果值,您可以通过将命令的调用放在[方括号中]并将全部作为参数的一部分放入另一个命令来捕获和使用该结果值。因此,在:

set signal_name [get_fanout abc_signal]

调用的结果get_fanout用作 的第二个参数set。我建议您也可以尝试这样做:

puts "-->[get_fanout abc_signal]<--"

它是一样的,除了这次我们将它与其他一些小字符串位连接并打印出整个批次。(如果您想知道,puts如果没有错误,其结果始终是空字符串,并set返回变量的内容。)

如果那仍然打印错误的值(以及事先正确的值,周围没有箭头标记),那么真正的问题很可能get_fanout是没有按照您的预期进行。虽然可以捕获命令的标准输出,但这样做是一种相当先进的技术;最好考虑是否有替代机制来实现您想要的。(该get_fanout命令不是 Tcl 语言库或任何非常常见的附加库(如 Tk 或 Tcllib 集合)的标准部分,因此我们只能猜测它的行为。)

于 2013-02-15T22:23:44.453 回答