将程序保存到文件

Save procedure to file

我正在学习TCL语言,所以问题可能有点简单。我正在寻找从向量构造一个矩阵。我在调查之前提出的问题时发现了以下想法:

 set phi_x [lrepeat 36 [lrepeat 12 0.]]

创建我的矢量列表。然后我用命令 lset 填充列表的向量。然后我使用以下内容,这是我在另一个问题线程中找到的:

proc printMatrix {myMatrix} {

set height [llength [lindex $myMatrix]]
set width [llength [lindex $myMatrix 0]]
for {set j 0} {$j < $width} {incr j} {
    puts -nonewline \Phi$j
}
puts ""
for {set i 0} {$i < $height} {incr i} {
    puts -nonewline $i
    for {set j 0} {$j < $width} {incr j} {
        puts -nonewline \t[lindex $myMatrix $i $j]
    }
    puts ""
}

这段代码工作正常。问题是我似乎无法使用

将过程的结果保存到文件中
set varName [open file.out a]
puts $varName [printMatrix $myMatrix]
close $varName

感谢您的帮助!

如果您想 return 从过程中获取一个值并打印它,就像这样

puts $varName [printMatrix $myMatrix]

然后您需要用 append res ... 替换 puts -nonewline ... 调用,用 append res \n 替换 puts "" 调用,最后,当程序完成时,调用 return $res.

如果您希望过程将文本输出到文件,可以这样调用它

printMatrix $varName $myMatrix

然后像这样重新定义它

proc printMatrix {chan myMatrix} {

puts -nonewline ... 替换为 puts -nonewline $chan ...,将 puts "" 替换为 puts $chan ""

文档:append, proc, puts, return