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 で実行すると、これは当てはまらず、正確に 2 つの引数に対してのみ機能するようです。
% ::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 バージョンでは 2 つの引数しかサポートされていませんか? 私にとって信頼できると思われるすべてのソースは、常に可変数の引数、たとえば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"
の結果には、2 つの ( ::min
, ::tcl::mathfunc::min
) のどちらも含まれませんinterp aliases
。