我正在寻找“puts”的备用命令。是否有替换命令用于放入tcl?如果有的话请告诉我
答案 0 :(得分:1)
不,Tcl确实没有一堆不同的输出命令。相反,不同的参数组合和与其他命令的合作用于以不同的方式产生输出。例如,可以修改puts
以将输出定向到除stdout
以外的其他位置(通过提供通道参数),或者不通过换行符结束输出(通过提供-nonewline
标志)。格式化输出(如在C' s printf
中)可以通过将puts
应用于format
的输出来生成,就像在
puts [format "My string is %s" foo]
# => My string is foo
(允许输出多语言的变体:)
# ... insert necessary initialization here ...
puts [::msgcat::mc "My string is %s" foo]
# => Min sträng är foo
所以我们通常会这样做。你有什么特别需要的吗?
答案 1 :(得分:1)
不,您只有puts
和(从8.5开始)chan puts
,尽管它使用相同的实现代码。但是你可以轻松地制作自己的命令来编写你想要的东西。例如,这是一个简单的编写器,它坚持使用通道名称和数据,将通道配置为以二进制模式工作,在没有换行符的情况下写入数据,然后刷新通道:
proc writeBinary {channelName data} {
fconfigure $channel -translation binary
puts -nonewline $channelName $data
flush $channelName
}
这里的东西很像非常很像C printf()
:
proc printf {pattern args} {
puts [format $pattern {*}$args]
}
(我使用更适合日志记录的更复杂版本,以便我可以指定日志记录级别和要写入的消息的详细信息,并在启用时将消息记录到相应的日志目标,方式让人联想到Java的log4j。但你可能不需要那种程度的幻想。)
编写程序以简化操作没有任何问题。 Tcl只提供puts
,因为事实证明这足以构建其他所有内容。