Выход и возврат в Proc TCL

Я хочу знать разницу между Exit и Return внутри процедуры. У меня есть скрипт, который содержит много процедур, один из них использует выход и некоторое значение, например:

proc someProc {code} {
    exit $code
}

а другой такой:

proc multiply {value} {
    set number [expr {$value * 5}]
    return $number
}

Выход останавливает работающий скрипт или в чем разница?


person virusivv    schedule 03.12.2015    source источник


Ответы (1)


Команда exit останавливает текущий процесс. После этого запущенная программа исчезнет (хотя файл с кодом останется). Его необязательный аргумент — это код ошибки, который передается ОС; значение по умолчанию равно нулю, что означает полное отсутствие ошибок.

Команда return останавливает текущий вызов процедуры. Необязательный аргумент позволяет указать результат вызова процедуры; по умолчанию используется пустая строка (учитывая, что в Tcl вообще нет NULL/null/nil/и т. д.).

Внутри exit выполняет системный вызов API ОС «остановить запуск этой программы», а return выдает исключение, которое общий код управления процедурами преобразует в результат вызова.

person Donal Fellows    schedule 03.12.2015
comment
если я вызову умножить набор [умножить 5], результат будет 25, и если я вызову someProc, выйдет ли сценарий или только процедура? - person virusivv; 03.12.2015
comment
@virusivv Если вы вызовете someProc, весь скрипт завершится, включая любую интерактивную оболочку, которую вы можете запустить. - person Erik Johnson; 06.12.2015