如何使用变量作为 TCL proc 参数的默认值
我有一个变量,我想将其用作参数的默认值:
proc log {message {output $::output}} {
....
}
有没有办法做到这一点,或者需要我评估我的过程中的变量?
I've got a variable that I would like to use as default value for an argument:
proc log {message {output $::output}} {
....
}
Is there a way to do this or need I to evaluate the variable inside my proc?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,但您不能在参数列表中使用大括号 (
{}
)。您可以这样声明该过程:但请注意:
变量在声明过程时计算,而不是在执行时计算!
Yes, but you cannot use curly braces (
{}
) for your argument list. You declare the procedure e.g. this way:But be aware:
The variable is evaluated at the time when the procedure is declared, not when it is executed!
如果您想要一个仅在调用时定义值的默认参数,则必须更加棘手。关键是您可以使用
info level 0
获取当前过程调用的参数列表,然后只需检查该列表的长度:记住,在检查参数列表时,第一个是命令本身的名称。
If you want a default argument that is only defined in value at the time you call, you have to be more tricky. The key is that you can use
info level 0
to get the list of arguments to the current procedure call, and then you just check the length of that list:Remember, when checking the list of arguments, the first one is the name of the command itself.
另一种方法可以做到这一点:
Another way to do this: