You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tcl命名空间集合调用别名时,如何获取别名而非真实过程名?

解决方法

要让过程返回调用时使用的别名(比如::my::newName),可以通过获取上层调用的命令行来实现——info level 0返回的是实际执行的过程名,而info level -1会记录触发这个过程的ensemble调用命令。

修改你的::my::name过程如下:

proc ::my::name {args} {
    # 从上层调用中提取使用的别名
    set invoked_alias [lindex [info level -1] 1]
    # 拼接成完整的命名空间限定名
    puts "::my::$invoked_alias"
}

测试验证:

  • 调用my name时,输出::my::name
  • 调用my newName时,输出::my::newName

原理说明:
当通过命名空间ensemble的别名(如newName)调用时,实际执行的是::my::name过程,此时info level -1对应的是触发调用的完整命令my newName,从中提取第二个元素就是用户使用的别名,再拼接命名空间前缀即可得到你需要的结果。

内容的提问来源于stack exchange,提问作者Mkn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:36:18