169 похожих чатов

Generic procedure function test<T>(param: T); type case T of

longint: NewT = word;
longword: NewT = byte;
end;
var
v1: NewT;

Как это можно сделать? Чтобы у меня был разный тип NewT в зависимости от того, каким типом T я специализирую дженерик?

21 ответов

42 просмотра

Ты просто тип Т передай И что это за тип можешь смотреть в методе каком нибудь

notme- Автор вопроса
Alex Wow
Ты просто тип Т передай И что это за тип можешь с...

Мне нужно переменную объявить типа NewT

да никак такое не сделать, NewT = word; так работать не будет ибо чтобы обьявить новый тип нужна декларация type а её абы куда не впихнешь

notme- Автор вопроса
Александр (Rouse_) Багель
да никак такое не сделать, NewT = word; так работа...

не знаю как в дельфи, но в FPC можно синоним типа спокойно впихнуть в процедуру, как в примере кода

notme- Автор вопроса
notme- Автор вопроса
notme
Ну вот как я и описал

хотя пока писал ответ, подумал что возможно мне это уже не нужно 😁 (но надо подумать)

notme
screenshot Delphi тоже умеет

но не в case блоке же, здесь у тебя просто обьявление типа так как оно и должно быть через type

notme- Автор вопроса
Александр (Rouse_) Багель
но не в case блоке же, здесь у тебя просто обьявле...

Ну я просто подумал, что case в record'ах - используется, может и здесь как-то можно...

специализируй двумя типами Т и невТ сразу отдавай в генерик

notme- Автор вопроса
zamtmn
специализируй двумя типами Т и невТ сразу отдавай ...

Да, так можно, но хотелось меньше ручной работы

notme- Автор вопроса
zamtmn
специализируй двумя типами Т и невТ сразу отдавай ...

Кстати... кажется придумал как обойти - нужно ещё одну функцию-генерик обёртку где уже смогу в коде через caseof специализировать дженерик функцию с двумя типами, а эту обёртку заинлайнить и её как будто вообще нет Матрёшка )

notme
Кстати... кажется придумал как обойти - нужно ещё ...

после серии таких придумок рождаются монстры говнокода. я люблю такое))

notme- Автор вопроса
Alexey Kulakov
незаинлайнится

Счас не рядом с ЭВМ, проверю позже, жаль если нет

notme- Автор вопроса

Это не я А кто тогда? 🤔хммммм👀

notme- Автор вопроса
Alexey Kulakov
незаинлайнится

Обманщик, ты Алексей! ) Всё заинлайнилось 👌 А то всё си плюс плюююс, си плюс плююююс 😄 А то всё низя, никак, невозможно! - Возможно!

notme- Автор вопроса
notme
Обманщик, ты Алексей! ) Всё заинлайнилось 👌 А то в...

generic function abc<T, TT>(value:T):T; var D: TT; begin Result:=SizeOf(D); end; generic function abc2<T>(value:T):T; inline; begin case sizeof(T) of 4: result:=specialize abc<T,integer>(value); 8: result:=specialize abc<T,UInt64>(value); end; end; procedure TForm1.FormCreate(Sender: TObject); var value:int64; begin Caption:=IntToStr( specialize abc2<int32>(value) );

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

Обсуждают сегодня

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
18
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Карта сайта