TCL: вернуться на более высокий уровень? - PullRequest
3 голосов
/ 16 августа 2010

Как я могу вернуться из процесса в более высокий контекст?
Например: если процесс X вызвал другой процесс Y, который вызвал третий процесс Z - есть ли способ вернуться из Z обратно в X?*

Ответы [ 2 ]

9 голосов
/ 16 августа 2010

С 8,5 года, да. Команда return имеет параметр -level, который используется для этого:

return -level 2 $someValue

Так, например:

proc X {} {
    puts "X - in"
    Y
    puts "X - out"
}
proc Y {} {
    puts "Y - in"
    Z
    puts "Y - out"
}
proc Z {} {
    puts "Z - in"
    return -level 2 "some value"
    puts "Z - out"
}
X

производит этот вывод:

X - in
Y - in
Z - in
X - out

Обратите внимание, что выполнение этого уменьшает возможность повторного использования Z, но это ваше дело.

0 голосов
/ 16 августа 2010

если вы вызываете "x process" из "z proc", то цикл создаст в вашем потоке процесса ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...