我想在“mycommand”的不同调用中给出不同的输出。如果直接调用“mycommand”,则输出详细信息(名称和年龄),如果在set命令中使用,则输出较小(仅第一列)。这可能在TCL吗?
> set output [mycommand]
> puts "$output"
name1
name2
name3
> mycommand
name1 age29
name2 age30
name2 age31
>
答案 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
}
但我建议你不要这样做。让调用者明确地询问一种或另一种模式,并选择合理的默认值。 (哪一个?你什么时候最懒?“