将程序保存到文件
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 ""
。
我正在学习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 ""
。