Ada_Ru форум

Обсуждение языка Ада

Управление с помощью типа данных

Оставить новое сообщение

Сообщения

rainbow-2000
Управление с помощью типа данных
2006-05-12 19:46:41

Всем привет!

 

Друзья, вот тут такой вопрос возник. Существует ли в Ada какая-либо возможность контролировать программу с помощью типа данных?

 

К примеру, есть гипотетическая функция Typeof(X), которая в зависимости от разных типов X выполняет различные действия:

 

if X = Character

Read_It;

if X = Integer

Count_It;

if X = My_Type

Do_My_Job;

.................

ну и т.д.

 

Другими словами, если на вход поступил символ, то делаем первое, если поступило число, то делаем второе, если поступила переменная типа My_Type, то делаем третье и т.д.

 

X может иметь тип данных из какого-то фиксированного набора, определённого программистом.

 

В C++ эта задача имеет решение (довольно корявое) с помощью шаблонов. Интересно, можно ли подобную задачу решить в Ada ?

 

 

Алексей

rainbow-2000 wrote:

 

Всем привет!

 

Друзья, вот тут такой вопрос возник. Существует ли в Ada какая-либо возможность контролировать программу с помощью типа данных?

 

К примеру, есть гипотетическая функция Typeof(X), которая в зависимости от разных типов X выполняет различные действия:

 

if X = Character

Read_It;

if X = Integer

Count_It;

if X = My_Type

Do_My_Job;

.................

ну и т.д.

 

С ходу и недосыпу - как вам вот такое решение (не бейте больно, если

мимо)

 

type Root_Type is null tagged record;

procedure Process_It (X : Root_Type);

 

type T1 is new Root_Type with record

C : Character;

end record;

 

procedure Process_It (X : T1);

 

type T2 is new Root_Type with record

I : Integer;

end record;

 

procedure Process_It (X : T2);

........

 

procedure Typeof (X : Root_Type'Class) is

begin

Process_It (X);

end Typeof;

Сергей Игоревич, спасибо большое. Надо будет попробовать, я только за машину сел. О результатах сообщу.

 

А ещё такой вопрос ко всем. Как-то здесь в дискуссии упоминалось нехорошее свойство C++ - программ зависеть от порядка следования #include-ов . Не подскажите, что имелось ввиду?

 

Алексей

 

 

Sergey I. Rybin wrote:

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти