我正在编写一个由 Cadence Encounter 版本 14.25(或 14.20,取决于我在启动时查看日志文件还是启动画面...)执行的 Tcl 脚本。
嵌入式 Tcl 解释器的版本似乎是
% package require Tcl
8.5.9
我的脚本使用该::tcl::mathfunc::min
函数,据我了解,该函数具有可变数量的参数,因此例如以下应该可以工作(它在我的安装中tclsh
具有版本 8.6.4):
% ::tcl::mathfunc::min 1 2 3
1
但是,当 Encounter 执行时,似乎情况并非如此,它仅适用于两个参数:
% ::tcl::mathfunc::min 1
too few arguments for math function "min"
% ::tcl::mathfunc::min 1 2
1
% ::tcl::mathfunc::min 1 2 3
too many arguments for math function "min"
为什么会这样?
- Encounter报的Tcl版本是不是说谎?
- Encounter的Tcl解释器坏了吗?
::tcl::mathfunc::min
在 8.6 之前的 Tcl 版本中是否只支持两个参数?所有对我来说看起来可靠的来源都表明它总是有可变数量的参数,例如this、this或that。
杰克逊的回答引发了进一步的调查:
相遇中:
% info args ::tcl::mathfunc::min
"::tcl::mathfunc::min" isn't a procedure
伟大的!...
我发现min
全局范围内有一个命令具有相同的行为,但错误消息不同:
% min 1
wrong # args: should be "min x y"
% min 1 2
1
% min 1 2 3
wrong # args: should be "min x y"
两个 ( ::min
, ::tcl::mathfunc::min
) 都不包含在 的结果中interp aliases
。