TCL:如何在设置[command]和命令时给出不同的输出?

时间:2014-02-26 11:58:17

标签: tcl

我想在“mycommand”的不同调用中给出不同的输出。如果直接调用“mycommand”,则输出详细信息(名称和年龄),如果在set命令中使用,则输出较小(仅第一列)。这可能在TCL吗?

> set output [mycommand]
> puts "$output"
  name1
  name2
  name3
> mycommand
  name1 age29
  name2 age30
  name2 age31
>

2 个答案:

答案 0 :(得分:1)

没有内置任何内容允许这样做,这样做可能会导致更多问题解决。如果你需要它在不同的上下文中产生不同的结果,最好的方法是实现一个控制输出的选项(例如:[mycommand -verbose]`)

答案 1 :(得分:1)

可以检查全局tcl_interactive变量是否设置为true,并使用info level查看(确定,猜测)您是否被调用直接,但这将是一个彻头彻尾的黑客。

if {$::tcl_interactive && [info level]==1} {
    # do a verbose thing
} else {
    # do a not-so-verbose thing
}

但我建议你不要这样做。让调用者明确地询问一种或另一种模式,并选择合理的默认值。 (哪一个?你什么时候最懒?“