【发布时间】:2016-03-28 17:34:30
【问题描述】:
我开始学习 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
感谢您的帮助!
【问题讨论】:
-
您的过程似乎没有返回任何值,在这种情况下,空字符串将被写入文件。
puts语句只会影响标准输出,不会影响文件。 -
该过程在屏幕上返回先前定义的列表中包含的向量的值。该列表是使用 set phi_x [lrepeat 36 [lrepeat 12 0.]] "myMatrix" is "phi_x"... 抱歉混淆 =(
-
该过程不会以返回任何值的命令结束。我假设您正在 shell 中运行该过程并观察
puts调用的输出。输出与返回值不同。 -
我按照您的评论编辑了如下程序: proc printMatrix {phi_x} { set fox [open Modx.out a] set height [llength [lindex $phi_x]] set width [llength [lindex $phi_x 0]] for {set j 0} {$j
-
你仍然有一些问题,包括仍然将换行符输出到
stdout而不是$fox。