一个纯粹的理论问题。
跟随
this question
我在想,在Tcl中实现匿名函数的最佳方法是什么。
do_something $data {proc {} {input} {
puts $input;
}};
类似于javascript
do_something(data, function (input) {
alert(input);
});
现在,这自然不会奏效。我在想这样的事:
proc do_something {data anon_function} {
anon_run $anon_function $data
}
proc anon_run {proc args} {
set rand proc_[clock clicks];
set script [lreplace $proc 1 1 $rand];
uplevel 1 $script;
uplevel 1 [concat $rand $args];
uplevel 1 rename $rand {}; //delete the created proc
}
这很管用。但我希望得到一个更好的模式的建议,然后这个,因为它不是很优雅,并没有真正使用很酷的Tcl功能。基本上我不想再打电话了
anon_run
.