2012-02-08 2 views
1

私は変数opに基づいてminまたはmaxのいずれかを呼び出す次のコードを持っています。Tcl:オンザフライコマンドの代入

switch $op { 
     min { 
     set x [::tcl::mathfunc::min {*}$lax] 
     set y [::tcl::mathfunc::min {*}$lay] 
     } 
     max { 
     set x [::tcl::mathfunc::max {*}$lax] 
     set y [::tcl::mathfunc::max {*}$lay] 
     } 
    } 

スイッチで書き込むのではなく、次のように記述します。

 set x [::tcl::mathfunc::$op {*}$lax] 
     set y [::tcl::mathfunc::$op {*}$lay] 

私はsubstコマンドを使用してみましたが、それは仕事を得ることができませんでした。私は使用するTcl 8.5.7

答えて

6

あなたの2番目の例は変更されていないので、オーバージェネレーターにする必要はありません。 守っ:

% set lax {1 2 3} 
1 2 3 
% set op min 
min 
% set x [::tcl::mathfunc::$op {*}$lax] 
1 
% set op max 
max 
% set x [::tcl::mathfunc::$op {*}$lax] 
3 
+0

作品を私のために8.5.9 –

+0

@kostixのおかげでもあるよう。私はまず最も単純なものを試してみたはずです! – Anand

+0

@Niall:これは8.5.0以降のもので動作します。それ以前には、{@}構文がありませんでした。 –