gpt4 book ai didi

tcl - 相当于tcl中的#define?

转载 作者:行者123 更新时间:2023-12-04 13:38:44 24 4
gpt4 key购买 nike

tcl 中是否有等价于 C++ #define 的命令?我已经看到了使用 proc 函数重载来实现“定义”的方法,只是想知道是否有人知道更直接的方法

最佳答案

interp alias的使用允许您使用 a 的内容和 b创建别名时:

interp alias {} foo_ab {} foo $a $b

如果您需要在调用时使用这些值,则需要一个辅助过程:
proc foo_ab args {
global a b
uplevel 1 [list foo $a $b {*}$args]
# Or this in older Tcl: uplevel 1 [list foo $a $b] $args
}

在 8.5 中,这也可以用别名和 apply 来写。 :
interp alias {} foo_ab {} apply {args {
global a b
uplevel 1 [list foo $a $b {*}$args]
}}

在 8.6 中,您可以使用 tailcall 进一步优化:
interp alias {} foo_ab {} apply {args {
global a b
tailcall foo $a $b {*}$args
}}

您还可以使用其他一些更肮脏的技巧,例如:
interp alias {} foo_ab {} namespace inscope :: {foo $a $b}

虽然这不是特别快,但它确实适用于所有 Tcl 8.* 版本。

关于tcl - 相当于tcl中的#define?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5006192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com