java - TCL:将动态TCL返回给Java程序写入文件

标签 java tcl

我从 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/

相关文章:

java - 使用 ArrayList<Integer> 进行排列,在控制台中按 10 的大小打印

java - 使用来自 Apache Commons Collections 的 MultiValueMap

用于计算持续时间的 Tcl 脚本

python-3.x - Lattice Diamond 命令行工具不知道 'synthesis' 命令

Java Swing : alignment of right element in JSplitPane

java - 如何在Java中绘制一个矩形?

error-handling - 如何找出 tcl 命令可能生成哪些错误?

python - tcl 和 Python 的相似之处

c - TCL-C API : Tcl_LinkVar function use

java - NoClassDefFoundError : javax. xml.bind.DatatypeConverter