首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要对TCL中的包进行一些解释

需要对TCL中的包进行一些解释
EN

Stack Overflow用户
提问于 2012-08-08 08:31:10
回答 2查看 1.7K关注 0票数 2

我在理解以下命令时遇到了一点小问题:

代码语言:javascript
运行
复制
package ifneeded HelloWorld 1.0 [list source [file join $dir helloworld.tcl]]

在pkgIndex.tcl中,我理解当pkgIndex.tcl被获取时,例如,我们包需要HelloWorld 1.0时,helloworld.tcl将被获取。我不明白列表命令..。

EN

回答 2

Stack Overflow用户

发布于 2012-08-08 09:01:10

包(如果需要命令期待 ),输入如下:

代码语言:javascript
运行
复制
package ifneeded package version ?script?

您可以看到,在您的示例中,是HelloWorld,版本是1.0。最后,脚本是[list源文件join $dir helloworld.tcl]。使用 list 的原因是脚本参数需要一个列表。

票数 1
EN

Stack Overflow用户

发布于 2012-08-08 10:40:47

package ifneeded命令期望脚本作为它的最后一个参数。脚本被期望(在常识中)是格式良好的,也就是说,可以被Tcl解析器解析。

在这个相当标准的pkgIndex.tcl中,需要确保的是:无论在处理来自pkgIndex.tcl的代码时"dir“变量包含什么内容,脚本都应该以这样的方式构造,以便以后Tcl解析器可以在其中看到带有一个参数的source命令--不管$dir是否扩展到包含空格或{等时髦字符。

输入list命令。在这里,它用于构造一个包含两个元素的列表:字符串"source“和包含文件名的字符串(用作该source命令的唯一参数)。现在,当该列表被解释为一个脚本(一个字符串)时,Tcl确保字符串表示包含所有必要的引用,以消除空白等方面的任何歧义。这确保了当解析器稍后解释我们构建的脚本时,其中的source命令将完全接收一个参数。

您可以阅读更多关于使用list防止引用问题的更好的书面信息,这里

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

https://stackoverflow.com/questions/11860631

复制
相关文章

相似问题

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