【问题标题】:What is/was auto_oldpath?什么是/曾经是 auto_oldpath?
【发布时间】:2013-10-22 15:28:34
【问题描述】:

根据tcl.tk

auto_oldpath 是一个全局 Tcl 变量,在 auto_load_index 过程。

and

auto_path 是 Tcl 知道的神奇名称之一。它描述在 Tcl 手册页,“库”。它是一个包含列表的全局变量 Tcl 在尝试解析时使用的目录 使用 package 命令打包,或使用解析命令 自动加载。 package 和 auto_load 命令在 不同的方法。 auto_load 搜索 auto_path 目录 对于名为 tclIndex 的文件。这些是“Tcl 自动加载索引文件”,以及 被格式化为两个版本; 2.0 版包含命令集 auto_index(::namespace::function_name) $cmd 其中 $cmd 通常 source 定义命令 ::namespace::function_name 的文件

这是给我的:

% puts $auto_path
/usr/share/tcltk/tcl8.5 /usr/lib /usr/local/lib/tcltk /usr/local/share/tcltk /usr/lib/tcltk /usr/share/tcltk /usr/share/tcltk/tk8.5/ttk

但是:

% puts $auto_oldpath
can't read "auto_oldpath": no such variable

【问题讨论】:

    标签: tcl


    【解决方案1】:

    此变量已移至 ::tcl 命名空间。
    构建 auto_index 时,此变量设置为 ::auto_path 变量的值。
    如果::tcl::auto_oldpath 的内容等于::auto_path 变量的内容,它将不会尝试再次加载auto_index。

    引用init.tcl的相关部分

    proc auto_load_index {} {
        variable ::tcl::auto_oldpath
        global auto_index auto_path
    
        if {[info exists auto_oldpath] && ($auto_oldpath eq $auto_path)} {
            return 0
        }
        set auto_oldpath $auto_path
        # ....
    }
    

    【讨论】:

    • 明确地说,该变量被认为是 Tcl 实现的一部分,不应被任何用户或扩展包代码访问。它也不保证在任何特定时间都存在。
    猜你喜欢
    • 2011-05-14
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多