首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在全局级别在itcl代码中查找tcl文件

在全局级别在itcl代码中查找tcl文件
EN

Stack Overflow用户
提问于 2018-04-29 09:31:47
回答 1查看 192关注 0票数 0

我有一个tcl文件,它定义了很少的config procs。我的一个应用程序是在itcl中编写的,它需要为每个对象调用这些配置过程。我无法在itcl中获取全局级别的TCL文件。它只允许在公共方法中采购,但这不是我要找的。我想一次只为所有对象生成tcl文件,然后在程序运行之前使用它。有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-29 19:18:18

source命令总是在当前级别评估文件的内容;它实际上只是将文件内容读入一个字符串,然后对其进行eval (除了使用info script时的一些小技巧)。这意味着如果您想要在全局上下文中source一个文件,您应该执行以下操作之一:

代码语言:javascript
复制
# Quotes around #0 just because of Stack Overflow's highlighting
uplevel "#0" {
    source thefile.tcl
}
代码语言:javascript
复制
uplevel "#0" [list source $thefile]
代码语言:javascript
复制
namespace eval :: {
    source thefile.tcl
}
代码语言:javascript
复制
namespace eval :: [list source $thefile]

使用list的版本正在进行代码生成,当文件名在变量中(或由file join等命令生成)时,效果会更好;如果所有内容都是文本形式的,那么最好使用带括号的版本。

使用uplevel #0的版本与使用namespace eval ::的版本的不同之处在于,前者在堆栈中向上移动到全局级别,而后者只是推送一个新的堆栈框架,您可以通过uplevel退出该框架。大多数情况下,对于正常的代码,差异非常小;请使用您喜欢的代码,因为这两个都是好代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50082593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档