在tcl中是否需要stdout?

在tcl中是否需要stdout?,tcl,stdout,Tcl,Stdout,我是tcl的新手,我希望精通这门语言,所以我想我应该问一下,为什么有些示例代码中有stdout,而有些代码只使用put,这是有原因的。这本书似乎没有解释这一点。IDE是否已更新为自动采用标准输出?如果您没有为标准输出提供通道名称,则将把命令写入标准输出(并且从…开始一直如此)。如果你愿意,你可以把它放进去或放出去;这没关系,但如果这样或那样做,事情可能会变得更清楚。让它成为你的选择。put的唯一必需参数是要写入的字符串 在性能方面,省略值稍微快一点,但您应该忽略这一点,因为与执行IO的成本相比,

我是tcl的新手,我希望精通这门语言,所以我想我应该问一下,为什么有些示例代码中有stdout,而有些代码只使用put,这是有原因的。这本书似乎没有解释这一点。IDE是否已更新为自动采用标准输出?

如果您没有为标准输出提供通道名称,则
将把
命令写入标准输出(并且从…开始一直如此)。如果你愿意,你可以把它放进去或放出去;这没关系,但如果这样或那样做,事情可能会变得更清楚。让它成为你的选择。
put
的唯一必需参数是要写入的字符串

在性能方面,省略值稍微快一点,但您应该忽略这一点,因为与执行IO的成本相比,查找的额外成本绝对微不足道。表达清晰是选择一个而不是另一个的唯一有效理由


不过,在某种情况下,这很重要。如果您希望编写默认情况下写入标准输出的代码,但可以重写它以写入文件(或套接字、管道或…),那么将通道名称存储在变量中就容易多了(当然,默认情况下设置为
stdout
)。这样,您所有的代码都是相同的,只有一点不同:正常关闭stdout不是一个好主意。这样的代码很容易避免:

# Also don't want to close stdin or stderr...
if {![string match std* $channel]} {
    close $channel
}

Tl'dr:没关系。我想知道你所说的“IDE”是什么意思:Tcl是一种编程语言和支持它的运行时;它不包括任何IDE。