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

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

21 ответов

26 просмотров

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

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
Если не секрет, какие задачи требуют прям такой ра...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта