2014-02-06 34 views
3

我有一個{} {abc}{abc} {},或者{abc} {def}數據,我想捕捉它在2個變量包圍值。我試過了:用列表的方式工作與{}

foreach {fname} <program to get values> { 
    set dfrom [lindex $fname 1] 
    set rname [lindex $fname 2] 
    print "fname- $fname" 
    print "dfrom- $dfrom" 
    print "rname- $rname" 
} 

但是,{}沒有得到索引。

回答

0

Tcl列表的索引從零開始。

如果你是在8.4你可以這樣做在Tcl的8.5

lassign $fname dfrom rname 
0

或更早的版本,這樣做:

foreach {dfrom rname} $data { } 

的foreach會基於列表賦值,所以你甚至不需要任何東西循環體。

2

manual about lindex,重點煤礦:

當與單一索引,LINDEX命令把列表作爲Tcl列表呈現,並返回從它(index個元件0指的是第一個元素名單

所以,你將不得不使用更多的東西是這樣的:

foreach {fname} <program to get values> { 
    set dfrom [lindex $fname 0] 
    set rname [lindex $fname 1] 
    print "fname- $fname" 
    print "dfrom- $dfrom" 
    print "rname- $rname" 
} 

如果你是Tcl的8.5或更新版本,您可以使用lassign

foreach {fname} <program to get values> { 
    lassign $fname dfrom rname 
    print "fname- $fname" 
    print "dfrom- $dfrom" 
    print "rname- $rname" 
} 
0

如果結果進來對你可以:

To save an array to a file: 
foreach {key value} [array get myArray] { 
    puts $myFile [list set myArray($key) $value] 
} 

這將是一個良好的開端,示例從拍攝:http://wiki.tcl.tk/1018

不過,如果你想收集僅使用一個變量FNAME你需要記住,列表的索引從0開始結果。

foreach {fname} <program to get values> { 
    set dfrom [lindex $fname 1] 
    set rname [lindex $fname 2] 
    print "fname- $fname" 
    print "dfrom- $dfrom" 
    print "rname- $rname" 
} 

但是,如果您收到一個嵌套列表,你需要先進入指數0的列表中,然後搜索它

foreach {fname} <program to get values> { 
    set dfrom [lindex $fname 0 0] 
    set rname [lindex $fname 0 1] 
    print "fname- $fname" 
    print "dfrom- $dfrom" 
    print "rname- $rname" 
} 

字體尋找LINDEX信息:http://wiki.tcl.tk/1481