在tcl中逐个打印值

时间:2012-04-12 22:52:52

标签: tcl informix

我在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

现在,我得到整个行而不是第一个或第二个值..

2 个答案:

答案 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执行此操作):请参阅thisthisthe tutorial部分以获取解释。

强烈建议您自己完成整个教程,否则您将面对每一个小问题。 Tcl比初看起来更简单,所以只需要花时间掌握它的基础知识。