Сообщение Re[6]: Обращение к процедуре несколькими уровнями выше от 10.11.2018 8:17
Изменено 10.11.2018 8:19 Khimik
Re[6]: Обращение к процедуре несколькими уровнями выше
GIV>А теперь надо из другой фукции позвать твое чудо, а она внезапно void или String возвращает.
GIV>Лучше уж возвращать Optional.
Вот ещё пример,когда мне требуется такая возможность. Довольно часто у меня есть функция или процедура, в начале которой инициализируются классы и динамические массивы, а в конце перед выходом освобождаются. Так вот довольно часто в середине этой функции код обнаруживает, что надо поскорее из неё выйти с result := false; Только чтобы из неё выйти, нужно заодно освободить все эти временные классы и массивы. В результате во многих местах функции появляется такой одинаковый код:
Я подумываю о том, чтобы почаще использовать безусловные переходы: в конце такой функции приведённый код будет стоять под цифрой, и в середине кода переход будет через goto. А так хотелось бы иметь универсальную под-процедуру для выхода из функции:
GIV>Лучше уж возвращать Optional.
Вот ещё пример,когда мне требуется такая возможность. Довольно часто у меня есть функция или процедура, в начале которой инициализируются классы и динамические массивы, а в конце перед выходом освобождаются. Так вот довольно часто в середине этой функции код обнаруживает, что надо поскорее из неё выйти с result := false; Только чтобы из неё выйти, нужно заодно освободить все эти временные классы и массивы. В результате во многих местах функции появляется такой одинаковый код:
result := false;
tmpclass.free;
setlength(tmparray,0);
exit;
Я подумываю о том, чтобы почаще использовать безусловные переходы: в конце такой функции приведённый код будет стоять под цифрой, и в середине кода переход будет через goto. А так хотелось бы иметь универсальную под-процедуру для выхода из функции:
procedure ErrExit;
begin
result[1] := false;
tmpclass.free;
setlength(tmparray,0);
exit[1];
end;
Re[6]: Обращение к процедуре несколькими уровнями выше
GIV>А теперь надо из другой фукции позвать твое чудо, а она внезапно void или String возвращает.
GIV>Лучше уж возвращать Optional.
Вот ещё пример,когда мне требуется такая возможность. Довольно часто у меня есть функция или процедура, в начале которой инициализируются классы и динамические массивы, а в конце перед выходом освобождаются. Так вот довольно часто в середине этой функции код обнаруживает, что надо поскорее из неё выйти с result := false; Только чтобы из неё выйти, нужно заодно освободить все эти временные классы и массивы. В результате во многих местах функции появляется такой одинаковый код:
Я подумываю о том, чтобы почаще использовать безусловные переходы: в конце такой функции приведённый код будет стоять под цифрой, и в середине кода переход будет через goto. А так хотелось бы иметь универсальную под-процедуру для выхода из функции:
GIV>Лучше уж возвращать Optional.
Вот ещё пример,когда мне требуется такая возможность. Довольно часто у меня есть функция или процедура, в начале которой инициализируются классы и динамические массивы, а в конце перед выходом освобождаются. Так вот довольно часто в середине этой функции код обнаруживает, что надо поскорее из неё выйти с result := false; Только чтобы из неё выйти, нужно заодно освободить все эти временные классы и массивы. В результате во многих местах функции появляется такой одинаковый код:
result := false;
tmpclass.free;
setlength(tmparray,0);
exit;
Я подумываю о том, чтобы почаще использовать безусловные переходы: в конце такой функции приведённый код будет стоять под цифрой, и в середине кода переход будет через goto. А так хотелось бы иметь универсальную под-процедуру для выхода из функции:
procedure ErrExit;
begin
tmpclass.free;
setlength(tmparray,0);
result[1] := false;
exit[1];
end;