Как Ada реализует пакеты?

Да, методы, которые вы применяете к элементам, выбранным с помощью jquery, называются jquery-плагинами, и имеется большое количество информации об авторстве в документах jquery.

Стоит отметить что jquery является просто javascript, поэтому нет ничего особенного в «методе jquery».

2
задан Mostafa Kasabi 31 March 2019 в 15:12
поделиться

2 ответа

Язык на самом деле не определяет, как должна осуществляться базовая реализация. Это оставлено на усмотрение поставщика компилятора. Я сомневаюсь, что они используют структуру или запись. Любой ответ, который вы найдете, будет зависеть от поставщика, а не от языка. Стоит отметить, что наиболее распространенный компилятор, GNAT, является открытым исходным кодом, поэтому исходный код доступен для просмотра и попытки разобраться, как они это делают. Опять же, это только одна потенциальная реализация. Другие компиляторы могут делать это по-другому.

Если вы просто имеете в виду, как может выглядеть пример пакета:

empty my_package.ads:

package My_Package is
    -- Empty package
end My_Package;

my_package.ads с типом типа «класс»:

package My_Package is

   type My_Type is tagged private;

   function Get_Value(Self : My_Type) return Integer;

private

   type My_Type is tagged record
      Value : Integer := 2;
   end record;

end My_Package;

my_package.adb с определениями операций:

package body My_Package is

   function Get_Value(Self : My_Type) return Integer is
   begin
      return Self.Value;
   end Get_Value;

end My_Package;

Как видите, пакеты могут быть пустым Они могут иметь типы, операции или оба. Пакеты - это место, где обрабатывается инкапсуляция (в отличие от типа, подобного C ++ и Java). Таким образом, вы можете иметь частные типы и операции в пакете, но не заниматься традиционным объектно-ориентированным программированием.

0
ответ дан Jere 31 March 2019 в 15:12
поделиться

Пакет Ada - это в основном просто пространство имен, поэтому он не влияет на исполняемый код, генерируемый компилятором.

Позвольте мне попытаться проиллюстрировать это.

Ада:

   ...
   A := B;
   ...

может излучать такой код, как:

...
CPY B, A
...

Ада:

   package P is
      B: Integer;
      ...
   end;
   ...
   A := P.B;
   ...

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

Пакет может иметь код инициализации, который будет реализован очень похоже на процедуру. Создание экземпляра универсального пакета может быть реализовано как запись (компоненты которой содержат универсальные параметры) или может быть развернуто на месте, и в этом случае ситуация такая же, как и с неуниверсальным пакетом.

Интересный вопрос! Почему ты спрашиваешь?

0
ответ дан debater 31 March 2019 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: