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