我在tcl中有以下代码..
proc GetPPVSummary {} {
global LIBRARY DB_MACHINE ALT_MACHINE
set query "SELECT first 2 * from test ORDER by ppv_id DESC"
set result [mtlrequest $LIBRARY DbSelect "test@$ALT_MACHINE|$query"]
return $result
}
set return_data [GetPPVSummary]
puts $return_data
以上返回的内容如下:
{{753 38 {2000-04-10 00:00:00} {2000-04-11 00:00:00} 3 HQAWR 56897 PPV B Event_04292012_teaser {} Event_04292012_teaser The_World_Doesnt_Care {$ 99.00} {$ 0.01}}
如何在tcl中逐个打印值?
好的,所以我现在尝试了以下内容:
foreach record $return_data {
set event_date [lindex $record 1]
set attempts_cnt [lindex $record 2]
set success_cnt [lindex $record 3]
set fail_cnt [lindex $record 4]
}
puts $event_date
现在,我得到整个行而不是第一个或第二个值..
答案 0 :(得分:3)
假设$ return_data是列表列表,您需要
foreach record $return_data {
foreach item $record {
puts $item
}
}
答案 1 :(得分:2)
最有可能mtlrequest
返回一个列表,如果通过“如何在tcl中逐个打印值?”你想问“如何从这个值中提取成员”,有几种可能的答案:
lindex
可用于通过数字索引提取列表成员,例如set x [lindex $return_data 5]
将变量“x”设置为值HQAWR
。lassign
(Tcl 8.5+)可用于将列表值的元素分配给一组变量,例如lassign $return_data a b c d ...
请注意,那些{
和}
没有特殊含义 - 它们是Tcl将列表值转换为字符串的结果(您要求它使用puts
执行此操作):请参阅this的this和the tutorial部分以获取解释。
强烈建议您自己完成整个教程,否则您将面对每一个小问题。 Tcl比初看起来更简单,所以只需要花时间掌握它的基础知识。