- Код: Выделить всё
//
Class Procedure TApp.Run;
Begin
With TApp.Create Do
Try
Run;
Finally
Free;
End;
End;
//
Модератор: Модераторы
//
Class Procedure TApp.Run;
Begin
With TApp.Create Do
Try
Run;
Finally
Free;
End;
End;
//
mirk писал(а):Я вот даже не знаю что такое замыкания и живу без них хорошо
mirk писал(а):Для чего вам все это?
Дож писал(а):Неужто кто-то тут утверждает, что значит?
mirk писал(а):Неужели так много людей пользуется этифи фичами?
Лекс Айрин писал(а):Дож писал(а):Неужто кто-то тут утверждает, что значит? :)
Да, вы.
Дож писал(а):Нет, нигде не утверждаю.
Лекс Айрин писал(а):Дож писал(а):Нет, нигде не утверждаю.
но именно это Вы и сказали))
Вы привели мне пример программы ничем не отличающейся от обычной, но в ней один оператор заменен другим.... ах да... стоит учитывать, что программа это, фактически, функция с двумя параметрами (input, output:file) и выхлопом(возвращаемым значением) exitCode.
Кстати, вы забываете одну особенность паскаля (да и других процедурных языков, если честно). Имя переменной/процедуры это тоже глобальная переменная.
mirk писал(а):Я вот даже не знаю что такое замыкания и живу без них хорошо. Аналогичное могу сказать и про многие другие фичи Неужели так много людей пользуется этифи фичами?Для чего вам все это?
Дож писал(а):Вернёмся к утверждению, которое Вы назвали бредом: «можно и вовсе отказаться от глобальных переменных в коде». Это утверждение верно, можно переписать содержательную программу так, чтобы в ней не были использованы глобальные переменные. Оно не является бредом. Обоснование «Как минимум, одна глобальная переменная в программе всегда будет -- сам объект.» не верно, что ясно видно из нескольких приведённых примеров (эти примеры называются «контрпримерами» и их целью является опровержение некоторого утверждения).
Дож писал(а):подразумевая, что опытный программист сам сможет достроить пример до программы, в которой не использовано глобальных перменных. Больше я ничего не говорил.
Дож писал(а): Так, понятия «глобальная переменная» и «глобальный идентификатор» различны. Input, Output, ExitCode — глобальные переменные и глобальные идентификаторы.
Mirage писал(а):Ох уж эти консерваторы! И IDE им удобные не нужны, и языковые фичи удобные не нужны. Без них живу и хорошо.
Нам это нужно, чтобы экономить время. Как на написании, так и на поддержке.
И если вы не видите как эти вещи экономят время, по причине незнакомства с ними, это не значит, что они бесполезны и ими никто не пользуется.
kazalex писал(а):Вообще-то можно.
Mikhail писал(а):По Вашей ссылке об этом ни слова.
Утечка памяти
В системах со сборкой мусора тоже могут возникать утечки памяти, правда, имеющие несколько другую природу. Ссылка на неиспользуемый объект может сохраниться в другом объекте, который используется и становится своеобразным «якорем», удерживающим ненужный объект в памяти. Например, созданный объект добавляется в коллекцию, используемую для вспомогательных операций, потом перестаёт использоваться, но не удаляется из коллекции. Коллекция удерживает ссылку, объект остаётся достижимым и не подвергается сборке мусора. Результатом становится всё та же утечка памяти.
Чтобы устранить подобные проблемы, среда исполнения может поддерживать специальное средство — так называемые слабые ссылки. Слабые ссылки не удерживают объекта и превращаются в null, как только объект исчезает — поэтому код должен быть готов к тому, что однажды ссылка укажет в никуда.
Mikhail писал(а):Напомню, утечка памяти это когда на выделенный блок не остается ссылок.
Вернуться в Free Pascal Compiler
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4