LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

Толково сделано как раз в Паскале. Каждый модуль в Паскале - это на самом деле три модуля. Отдельно модуль объявления, отдельно модуль реализации, отдельно модуль инициализации. Они связаны магическим образом (друзья типа). В итоге в паскале фактически циклических зависимостей нет. Объявления образуют дерево. Но реализации могут образовывать циклические зависимости, поскольку на самом деле они ссылаются только на интерфейс. Т.е. с одной стороны, всё правильно и циклических зависимостей нет. С другой стороны, пользоваться ими можно без всяких костылей, т.е. возможно иметь две функции из разных модулей, вызывающие друг друга.

Выпилить такое решение можно было только из чистого идиотизма.

Исходная версия den73, :

Толково сделано как раз в Паскале. Каждый модуль в Паскале - это на самом деле три модуля. Отдельно модуль объявления, отдельно модуль реализации, отдельно модуль инициализации. Они связаны магическим образом (друзья типа). В итоге в паскале фактически циклических зависимостей нет. Объявления образуют дерево. Но реализации могут образовывать циклические зависимости, поскольку на самом деле они ссылаются только на интерфейс. Т.е. с одной стороны, всё правильно и циклических зависимостей нет. С другой стороны, пользоваться ими можно без всяких костылей, т.е. возможно иметь две функции из разных модулей, вызывающие друг друга.