Форум — Development Tcl, замыкания что-ли? 0 0 Как реализовать такое? proc abc {} { puts "Hi, Jack!" } proc A {a} { proc B {} { eval [ $a ] } } A abc B Ссылка
proc A {a} { proc B {} { list eval $a } } Но это не замыкание конечно ни разу. Настоящие замыкания в тикле не сделаешь. Хотя можно во многих случаях их эмулировать. См. http://wiki.tcl.tk/3330 Hjorn ★ (10.09.09 12:08:19 MSD) Показать ответы Ссылка
Ответ на: комментарий от Hjorn 10.09.09 12:08:19 MSD Так $a все равно ж недоступно будет в дальнейшем? placement_new ★★ (10.09.09 12:10:48 MSD) автор топика Ссылка
Ответ на: комментарий от Hjorn 10.09.09 12:08:19 MSD sorry, не так. proc A {a} { proc B {} [list eval $a] } В общем нужно делать подстановку переменной сразу. Hjorn ★ (10.09.09 12:12:52 MSD) Показать ответ Ссылка
Ответ на: комментарий от Hjorn 10.09.09 12:12:52 MSD Занимательно, спасибо. placement_new ★★ (10.09.09 12:14:49 MSD) автор топика Показать ответ Ссылка
Ответ на: комментарий от placement_new 10.09.09 12:14:49 MSD А несколько комманд так выполнить можно? Ну то есть после eval $a, выполнить например еще puts "!!!"? placement_new ★★ (10.09.09 12:22:05 MSD) автор топика Показать ответ Ссылка
Ответ на: комментарий от placement_new 10.09.09 12:22:05 MSD proc abc {} { puts "Hi, Jack!" } proc A {a} { set b_body [subst -nocommand { eval $a puts !!! }] proc B {} $b_body } Hjorn ★ (10.09.09 12:38:07 MSD) Ссылка
http://www.tcl.tk/man/tcl8.5/TclCmd/uplevel.htm jtootf ★★★★★ (10.09.09 12:41:39 MSD) Показать ответ Ссылка
Ответ на: комментарий от jtootf 10.09.09 12:41:39 MSD а как uplevel тут поможет? $a в B нету же. placement_new ★★ (10.09.09 13:35:43 MSD) автор топика Показать ответ Ссылка
Ответ на: комментарий от placement_new 10.09.09 13:35:43 MSD >а как uplevel тут поможет? а это смотря чему надо помогать. uplevel это как бы тоже замыкание, просто не лексическое jtootf ★★★★★ (10.09.09 14:27:48 MSD) Ссылка