2012-07-11 30 views
1

我正在從過程中的文件逐行讀取一組數據。現在我怎樣才能從這個過程中返回這些數據行。我怎樣才能把這個程序輸出的數據分配給一個數據集呢?如何從TCL中的proc傳遞數據集

proc readdata{} { 
    set fptr [open Test1.txt r] 
    set fptr_data [read $fptr] 
    set data [split $fptr_data "\n"] 
} 

如何從此過程返回此數據?

+1

什麼是 「數據集」 在你的情況,恰恰? – kostix 2012-07-12 07:20:21

+1

你可能想在'read'和'split'之間關閉$ fptr'。 – 2012-07-12 07:47:26

回答

3

可以使用return聲明:

proc readdata {filename} { 
    set fptr [open $filename r] 
    set fptr_data [read $fptr] 
    set data [split $fptr_data "\n"] 
    return $data 
} 
... 
set dataset [readdata Test1.txt] 

然而,Tcl缺省程序返回上次運行的命令的結果。我個人更喜歡明確的return聲明。

3

從技術上講,你需要別的什麼也不做:

當調用一個過程,過程的返回值是在return命令指定的值。如果過程沒有執行明確的return,那麼它的返回值是過程正文中最後執行的命令的值。

- http://www.tcl.tk/man/tcl8.5/TclCmd/proc.htm