我从 Java 调用 TCL 脚本,在其中动态创建 TCL,如下所示:
puts " # generated comment"
puts " set myDict \[dict replace \$otherDict \\"
foreach {key value} [dict get $abcDict] {
puts "$key $value"
;# here, more TCL is generated
}
puts " \]"
我基本上会比较一堆字典,并使用 puts
输出它们之间的差异和相似之处,从而创建一个 TCL 程序。
现在,这会显示在我的 Eclipse 控制台中。如何将生成的整个 TCL 返回到 Java 并将其写入文件?我想创建一个包含动态创建的 TCL 过程的文件。
最佳答案
puts
command将字符串写入 channel 。它默认写入 stdout
channel ,该 channel 会发送到控制台(或发送到父进程,或发送到任何数量的其他内容,具体取决于 tclsh 程序的调用方式),但如果您明确指定哪个 channel 要写入,它会写入该内容。您说使用一个可选参数,该参数位于要写入的字符串之前(但如果您使用该参数,则位于 -nonewline 选项之后)。
我们从哪里获取写入 channel 来写入文件?来自 open
command :
set theChannel [open "myFile.tcl" w]
请注意,我们在这里使用了 w
模式,因为我们将w写入文件。其余的代码可以这样写:
puts $theChannel " # generated comment"
puts $theChannel " set myDict \[dict replace \$otherDict \\"
foreach {key value} [dict get $abcDict] {
puts $theChannel "$key $value"
# here, more TCL is generated
}
puts $theChannel " \]"
别忘了close $theChannel
一旦你完成了它。
专业提示:如果您要生成代码,list
command可以非常有用,因为它可以精确地进行各种事情所需的正确引用,并且被定义为完全按照这种方式工作。
关于java - TCL:将动态TCL返回给Java程序写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35983489/