Сфера анонимных методов
Хорошая вещь в анонимных методах заключается в том, что я могу использовать локальные переменные в вызывающем контексте. Есть ли какая-то причина, почему это не работает для выходных параметров и результатов работы?
function ReturnTwoStrings (out Str1 : String) : String;
begin
ExecuteProcedure (procedure
begin
Str1 := 'First String';
Result := 'Second String';
end);
end;
Конечно, очень искусственный пример, но я столкнулся с некоторыми ситуациями, когда это было бы полезно.
Когда я пытаюсь скомпилировать это, компилятор жалуется, что он "не может захватить символы". Кроме того, я однажды получил внутреннюю ошибку, когда попытался сделать это.
РЕДАКТИРОВАТЬ Я просто понял, что это работает для нормальных параметров, таких как
... (List : TList)
Разве это не так проблематично, как в других случаях? Кто гарантирует, что ссылка все еще указывает на живой объект всякий раз, когда выполняется анонимный метод?