Форум: "Начинающим";
Текущий архив: 2016.02.14;
Скачать: [xml.tar.bz2];
ВнизОперация сравнения в дженериках Найти похожие ветки
← →
Друг (2014-07-09 15:54) [0]Пытаюсь сравнить между собой две переменные типа T
if (a < b) then ...
Ругается. Какого спрашивается фига?
← →
Друг (2014-07-09 15:55) [1]в качестве T использую Integer
← →
brother © (2014-07-09 16:06) [2]> Ругается.
как?
← →
Друг (2014-07-09 16:31) [3]
type
TMyGeneric<T> = class
class function IsLess(const a, b: T): boolean;
end;
class function TMyGeneric<T>.IsLess(const a, b: T): boolean;
begin
Result := (a < b);
end;
[dcc32 Error] TEST_PLATFORM.pas(62): E2015 Operator not applicable to this operand type
← →
Эрик Теодор (2014-07-09 16:38) [4]http://www.tdelphiblog.com/2009/08/delphi-2009-win32-5.html#LV
← →
Друг (2014-07-09 16:53) [5]> Эрик Теодор (09.07.14 16:38) [4]
там нет про сравнение
← →
Эрик Теодор (2014-07-09 16:57) [6]
>
> там нет про сравнение
да мне просто потрепаться негде))Эти синтаксис, соответственно, указывает, что T может быть заменен только на:
...
3) на порядковый (ordinal), число с плавающей точкой или запись (один ненулевой тип данных, следуя терминологии Delphi);V-B. Зачем нужны ограничения?
"Я думал, что генерики предназначены для того чтобы использовать один код сразу для всех типов. Какой смысл в том, чтобы ограничивать используемые типы?"
Ну, ограничения позволяют компилятору получить больше информации об используемых типах. Например, ограничение , позволяет компилятору узнать, что для переменной типа Т, разрешается вызывать метод Free. А из ограничения > сделать вывод, что разрешается использовать Left.CompareTo (Right).
← →
Друг (2014-07-09 17:27) [7]> Эрик Теодор (09.07.14 16:57) [6]
Во-первых, там идёт контекстДля того, чтобы наложить ограничение на обобщённый параметр, нужно написать
Мне не хочется писать какие-то ограничения
И что это вообще за ограничения "," и ">" ?
Во-вторых, я пробовал TMyGeneric<T: ordinal> = class
тоже ругается
Ну и наконец операция сравнения - стандартная операция, для структур можно определить оператор. Нафига вообще эти IComparable?
← →
Эрик Теодор (2014-07-09 17:32) [8]
> Мне не хочется писать какие-то ограничения
а кто хочет? Вот у меня есть трусы - распрекрасного фасона и расцветки, но есть недостаток - их нельзя использовать как маечку. Пичалька
> Во-вторых, я пробовал TMyGeneric<T: ordinal> = class
> тоже ругается
а можть там "record" надо написать?
← →
Друг (2014-07-09 17:39) [9]В общем ладно
Я думал дженерики работают как сишные макросы
А оказалось "чего не знаю, того не компилю"
Мне кажется сишные шаблоны такую ситуёвину скомпилируют
Блин, даже array[1..sizeof(T)] не работает
Это просто ахтунг
← →
jack128_ (2014-07-09 20:24) [10]
if TComparer<T>.Default.Compare(a, b) < 0 then
но естественно это не работает например для рекордов с перекрытыми операторами сравнения. Да и вообще с рекордами.
← →
jack128_ (2014-07-09 20:27) [11]
> Блин, даже array[1..sizeof(T)] не работает
> Это просто ахтунг
Да, шаблоны плюсовые конечно удобнее. Вообще дельфийская реализация самая худшая и из известных мне, даже в джаве возможностей больше.
← →
Друг (2014-07-10 10:28) [12]> jack128_ (09.07.14 20:24) [10]
> if TComparer<T>.Default.Compare(a, b) < 0 then
посмотрел дизасм
там происходит просто ужас!
но всёравно спасибо
очень жаль в итоге
← →
jack128_ (2014-07-11 09:46) [13]
> посмотрел дизасм
> там происходит просто ужас!
Дельфи и эффективный обобщенный код ??
"Нет, сынок. Это фантастика." (с) старая реклама
← →
Очевидное (2014-07-11 23:55) [14]Дженерики - НЕ шаблоны.
И какая-то абстрактная "эффективность" тут совершенно не при чем.
Читайте же, наконец, хотя бы Википедию.
А то (ассемблер) смотреть научились, а понимать логику построения модулей и работы компилятора - нет.
← →
jack128_ (2014-07-21 12:57) [15]
> Дженерики - НЕ шаблоны.
Ну да, эту матру все уже слышали не раз, а вот как объяснить чем же дельфийские дженерики лучше шаблонов - так никого.
Для NET"а все понятно, там дженерики можно в отдельных библиотеках распространять, но в дельфи то этого нельзя.
В результате мы имеет пересечение достоинств плюсов и нета, зато сумму их недостатков. Замечательно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2016.02.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.001 c