0

根据tcl.tk

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

auto_path 是 Tcl 知道的神奇名称之一。它在 Tcl 手册页“库”中进行了描述。它是一个全局变量,包含 Tcl 在尝试使用 package 命令解析包或使用 auto_load 解析命令时使用的目录列表。package 和 auto_load 命令以不同的方式使用 auto_path。auto_load 搜索 auto_path 目录以查找名为 tclIndex 的文件。这些是“Tcl 自动加载索引文件”,并被格式化为两个版本;2.0 版包含命令 set auto_index(::namespace::function_name) $cmd 其中 $cmd 通常获取定义命令 ::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
4

1 回答 1

1

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

引用相关部分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
    # ....
}
于 2013-10-22T16:00:56.673 回答