Чисто теоретический вопрос по Tcl.
После этого вопроса Я думал о том, как лучше реализовать анонимные функции в Tcl.
Конечный результат должен позволять разработчику передавать полный процесс в качестве аргумента в процесс anohter:
do_something $data {proc {} {input} {
puts $input;
}};
, который был бы похож на javascript
do_something(data, function (input) {
alert(input);
});
сейчас, естественно, это не будет работать OOTB. Я думал о чем-то в этом роде:
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
.