[Решено] FPC generics

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

[Решено] FPC generics

Сообщение FedeX » 30.11.2011 13:26:46

Доброго дня.
Долго не программировал на паскале (приходилось писать в основном на ява) и теперь не могу разобраться как записать на паскале такой эквивалент на яве:
Код: Выделить всё
public abstract class EntityAdapter<T extends IEntity> extends BaseAdapter {


Тоесть меня интересует именно <T extends IEntity> - как сделать чтобы класс с которым работает шаблонный класс был обязательно унаследован от некоторого класса или интерфейса и в противном случае компилятор выдавал ошибку?
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: FPC generics

Сообщение AlexVinS » 30.11.2011 14:08:40

На данный момент никак.
Аватара пользователя
AlexVinS
новенький
 
Сообщения: 95
Зарегистрирован: 27.01.2009 01:18:01

Re: FPC generics

Сообщение FedeX » 30.11.2011 14:19:50

Жаль..(
А может есть хотябы возможность узнать является ли шаблонная переменная объектом? Ну тоесть так:
Код: Выделить всё
var t:T;
if (t is TObject) then ...

наверно не прокатит если T это например boolean..
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: FPC generics

Сообщение AlexVinS » 30.11.2011 16:45:35

FedeX писал(а):Жаль..(
А может есть хотябы возможность узнать является ли шаблонная переменная объектом? Ну тоесть так:
Код: Выделить всё
var t:T;
if (t is TObject) then ...

наверно не прокатит если T это например boolean..


Такой вариант кстати будет почти тоже самое что <T:Tobject> - не скомпилируется для если Т не класс. Но с производным классом будет по другому. Точнее при компияции получится неявная проверка на то что параметр - это класс, а при выполнении уже проверка на реальный тип.

Вобщем пока ограничения не реализованы забудьте про них просто. Дженерики в паскале ближе к шаблонам C++ чем к собственно дженерикам (Java, C#).
Для параметра шаблона типизиция утиная. Тоесть можно вызывать _любой_ метод переменной неопределенного типа (например методы IEntity в вашем случае) как будто она объект и метод там есть, проверка проводится компилятором при специализации шаблона.
Аватара пользователя
AlexVinS
новенький
 
Сообщения: 95
Зарегистрирован: 27.01.2009 01:18:01

Re: FPC generics

Сообщение FedeX » 30.11.2011 17:08:36

А, спасибо, теперь понятней
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru