#delphi #lambda #closures #anonymous-methods #freepascal
#delphi #лямбда #замыкания #анонимные методы #freepascal
Вопрос:
Я попытался использовать синтаксис Delphi для анонимных методов:
type
fun = reference to function(): Integer;
Fpc показывает синтаксическую ошибку:
Error: Identifier not found "reference"
Какой эквивалент Free Pascal анонимным методам Delphi, если таковые имеются?
Комментарии:
1. Это моя самая востребованная функция!
Ответ №1:
Анонимные методы не реализованы во FreePascal. Список таких функций находится здесь .
Комментарии:
1. К этому прочтению в будущем: привет от 2011 года. Возможно, эта функция была реализована в то же время. Проверка списка функций, вероятно, действительно хорошая идея.
2. @Wouter: Хороший момент, но ненужный, так как в сообщении Дэвида будет метка даты в течение нескольких дней.
3. Это уже произошло, даже когда это все еще выглядит как просто время. Когда вы наводите на него курсор, вы получаете полную временную метку…
4. Free Pascal 2.6 и 2.7.1 поддерживают вложенные процедуры в стиле ISO, где вы можете передавать вложенные процедуры внешним процедурам без низкоуровневых манипуляций, и они могут получить доступ к своим родительским переменным. (что тоже является формой захвата состояния). Я также обновил статус функции ansistring (кодовая страница).
5. Да, но внешняя процедура также может передавать ее, т.е. весь этот путь к коду. Однако на него нельзя ссылаться после возврата исходной процедуры. Это не то же самое, что анонимные методы (захват которых более динамичен), но он относится к той же категории функций, и он может удовлетворить некоторые потребности для передачи пользовательского кода данных в общие функции перечислителя. Turbo Vision в Turbo times действительно выиграли бы от этого (TCollection. foreacH)