如何在 proc (Tcl) 中使用内置变量

How to use built-in variable in proc (Tcl)

TCL 有一些内置命令。

例如$env(some_env_var),我取一些环境变量。

我在proc

中使用$env(some_env_var)
proc pc {} {
  return $env(NUMBER_OF_PROCESSORS)
}

puts [pc]

然后我得到错误:

$ tclsh ./t.tcl
can't read "env(NUMBER_OF_PROCESSORS)": no such variable
    while executing
"return $env(NUMBER_OF_PROCESSORS)"
    (procedure "pc" line 2)
    invoked from within
"pc"
    invoked from within
"puts [pc]"
    (file "./t.tcl" line 5)

$env 似乎在 proc

的范围内无效

如何修改$env使其在proc范围内有效?

您必须将 env 数组放入 pc 过程的范围内:

proc pc {} {
  global env
  return $env(NUMBER_OF_PROCESSORS)
}

或者,使用 env 的完整命名空间路径:

proc pc {} {
  return $::env(NUMBER_OF_PROCESSORS)
}