沒有與代碼片段多個問題。第一個也是最簡單的錯誤是你沒有打開文件fo
。除非是在你還沒有在這裏顯示的代碼做過的工作,你需要在你foreach
循環之前一樣
set fo [open test.txt w]
補充一下。
的第二個問題是,你的代碼會寫這個內容的文件:
data1
data2
data3
,但可能你想讓它來寫這個內容:
This is Data1 Value
This is Data2 Value
This is Data3 Value
這裏的錯誤更微妙。你的循環正在做的是將different_content
設置爲名稱的每個感興趣的變量,但你想要這些變量的值。基本上你需要雙重取消引用different_content
變量。在變量名稱的開始處添加$
可爲您提供一級別的解除引用。不幸的是,在Tcl中,你不能僅僅將另一個$
放在前面來獲得第二個等級。但是您可以使用set
命令。畢竟,$
只是set
的合成糖:$foo
與[set foo]
完全相同。因此,我認爲你需要重寫你的循環體,如下所示:
puts $fo [set $different_content]
所以,把他們放在一起:
set data1 "This is Data1 Value\n"
set data2 "This is Data2 Value"
set data3 "\nThis is Data3 Value\n"
set fo [open test.txt w]
foreach different_content {data1 data2 data3} {
puts $fo [set $different_content]
}
close $fo
見我的代碼親愛PROC testforeach {} { 組文件名/tmp/indrajeet_DBTEST_dbmode.sql 集DATA1 「這是DATA1值\ n」 個 集data2「這是data2的值」 set fo open('/ tmp/indrajeet_DBTEST_dbmode。SQL') 的foreach different_content {數據1數據2} { 把$ FO $ different_content } 接近$ FO } testforeach但它不工作,親愛的,請幫我。 – 2011-04-13 06:17:27
注意:在這裏,我想在特定位置(即在臨時文件夾內)寫入文件。 – 2011-04-13 06:18:40
開放的語法錯誤。這是Tcl而不是C/javascript/Java – slebetman 2011-04-13 06:19:32