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

А кто-нибудь знает причину, почему в KType нет дженерика?

21 ответов

7 просмотров

а зачем он там?

Oleg Yukhnevich
а зачем он там?

А зачем он в KClass? Простейшее объяснение - копировали c Java

Alexander-Nozik Автор вопроса
Oleg Yukhnevich
а зачем он там?

Например, чтобы при передаче его в метод, автоматом определялся и проверялся дженерик метода

Oleg Yukhnevich
а зачем он там?

Для примера com.google.common.reflect.TypeToken вполне себе дженерик. На ум приходит то что в джаве способы получения Type всегда были нетипизированные: SomeClass.class .getDeclaredField(“someField”) .getGenericType(); И поэтому большой пользы в этом не было. В Kotlin есть typeOf() который удобно было бы использовать с дженериками, я даже для этого обертки делал: public inline class GenericType<T : Any>( public val actual: KType ) public inline fun <reified T : Any> type(): GenericType<T> { return GenericType(typeOf<T>()) } internal interface Komodo { suspend fun <T : EntryPoint<R>, R> run(source: String, type: GenericType<T>): R } Было удобно и красиво. Выглядит как просчет в дизайне. Не подумали про typeOf

Alexander-Nozik Автор вопроса
Ruslan Ibragimov
Для примера com.google.common.reflect.TypeToken вп...

Я просто переехал почти везде с KClass на KType и невозможность прокинуть его вместе с дженериком напрягает

Alexander-Nozik Автор вопроса
Ruslan Ibragimov
Для примера com.google.common.reflect.TypeToken вп...

Решение интересное, возможно утащу

Скопировали с джавы, а там нельзя дженерик, потому что примитивы.

Alexander Nozik
ну как, у KClass есть же

Ну значит у них по какой-то другой причине нельзя.

Alexander-Nozik Автор вопроса
Iaroslav Postovalov
Ну значит у них по какой-то другой причине нельзя.

Я думаю, что Руслан прав и просто недодизай

Alexander Nozik
Я думаю, что Руслан прав и просто недодизай

Возможно, надо было просто отдельный тип для typeOf сделать.

Alexander-Nozik Автор вопроса
Alexander Nozik
https://youtrack.jetbrains.com/issue/KT-50702

Кажется, это надо было обсуждать до того, как он перестал быть эксперементальным

Alexander-Nozik Автор вопроса
Vladimir Petraković
Кажется, это надо было обсуждать до того, как он п...

Ну то, решение, которое я написал, ничего не ломает

Alexander Nozik
https://youtrack.jetbrains.com/issue/KT-50702

https://github.com/mipt-npm/tables-kt/blob/4912afde00feec85f50eec2315e8f61cc94bde4f/src/commonMain/kotlin/space/kscience/tables/ColumnHeader.kt#L58 у меня не открывается

Alexander-Nozik Автор вопроса
Anton Lakotka
https://github.com/mipt-npm/tables-kt/blob/4912afd...

упсь. Я похоже линк с рефактор ветки дал, сейчас починю

Alexander-Nozik Автор вопроса
Anton Lakotka
https://github.com/mipt-npm/tables-kt/blob/4912afd...

починил, спасибо. Но пример @frostbit еще лучше

Alexander Nozik
Я просто переехал почти везде с KClass на KType и ...

Если не секрет, какие задачи требуют прям такой работы с типами? У меня на ум только плагины приходят

Alexander-Nozik Автор вопроса
Dmytro Sokolov
Если не секрет, какие задачи требуют прям такой ра...

Там в ишшью всё рассказали. Например колонки таблиц

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

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

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта