Большинство языков программирования имеют функцию «включить библиотеку в ваш код», но где функция «включить ваш код в библиотеку»? - PullRequest
0 голосов
/ 21 июля 2010

Большинство языков программирования имеют функцию «включить библиотеку в ваш код», но где функция «включить ваш код в библиотеку»?

Я имею в виду вставлять в другие файлы из источника, а не извлекать из потребляющих файлов.

Идея проста - у нас есть библиотека A с классом B, мы хотим расширить B с помощью некоторых C функций, но мы не хотим делать это путем расширения от B,но расширяя B.

Так что, если бы у нас была библиотека, подобная DLL, с функциями, и мы хотели бы добавить функции в эту DLL без создания новой DLL и сохранения возможности вызывать эти новые функции, как если бы мы вызывали эту первую DLL.

Суть не в том, чтобы иметь источники DLL и изменять их, а не в том, чтобы обернуть все функции в этой dll, просто для добавления нескольких новых функций, создающих новую dll, а в том, чтобы добавить функциональность в существующую dll и вернуть эту измененную DLL обратно.Не оборачиваясь, а вставляя внутрь.

Если вы нашли этот вопрос ВОПРОСОМ, пожалуйста, проголосуйте за повторное открытие.

Если у вас есть что добавить - добавьте - это вики сообщества.

1 Ответ

2 голосов
/ 22 июля 2010

Это во многом зависит от имеющегося языка программирования.

В C ++ любой модуль (поскольку там нет модулей) может добавлять контент в любое пространство имен. Вы можете связать две разные библиотеки DLL, добавляя членов в одно и то же пространство имен.

C # делает еще один шаг вперед: кто-то может не только добавить любое пространство имен, но вы можете использовать «методы расширения» для добавления методов в существующие классы.

В Ruby повторное открытие классов просто выполняется путем определения части класса в другом месте, эффективно имея несколько определений класса. Но все они относятся к одному и тому же классу, поэтому во время выполнения все они заканчиваются в одном классе.

В Lua вы можете снова открыть модули с помощью функции «модуль» и добавить все, что захотите.

Ничто из этого на самом деле не изменяет «исходный код» исходного кода - но они предлагают естественные, плавные расширения к нему, поэтому он, вероятно, настолько близок, насколько вы получите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...