我对 tcl 很陌生,我希望精通这门语言,所以我想我应该问一下,是否有一些示例代码在代码中有 stdout 而有些只是使用 puts 的原因。这本书似乎没有解释这一点。IDE 是否更新为自动采用标准输出?
问问题
510 次
1 回答
3
puts
如果您不提供频道名称,该命令将写入标准输出(并且从那时起一直以这种方式工作......好吧,从永远开始)。如果你愿意,你可以把它放进去,也可以把它拿出来;没关系,但是如果以一种或另一种方式完成,可能会使事情变得更清楚。让它成为你的选择。唯一的强制参数puts
是要写入的字符串。
在性能方面,省略该值会稍微快一些,但您应该忽略这一点,因为与执行 IO 的成本相比,查找的额外成本绝对是微不足道的。表达清晰是选择一个而不是另一个的唯一正当理由。
不过,有一个案例很重要。如果您想编写默认写入标准输出的代码,但是您可以覆盖它以写入文件(或套接字或管道或......),那么将通道名称存储在变量中要容易得多(即stdout
当然,默认设置为)。像这样,除了一点之外,您的所有代码都是相同的:通常这不是一个好主意close stdout
。使用这样的代码很容易避免这种情况:
# Also don't want to close stdin or stderr...
if {![string match std* $channel]} {
close $channel
}
于 2013-01-14T10:58:16.797 回答