Size: a a a

Kotlin Community

2020 April 05

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Я пилю два варианта, первый вдохновлён magnolia, это для простых кейсов где не нужны супер оптимизации. Второй вариант позволит писать генераторы для кастомного кода. Всё это поверх капта.
Сразу предвкушая почему не компайлер плагин, потому что у него теже самые проблемы, что и у макросов в скале - я не вижу конечного кода. Каптом же мы генерим доп исходники.

Вот магнолия если что https://magnolia.work/opensource/magnolia
Ну для компайлер плагинов просто еще апи нет. Я думаю, что когда будет, оно будет уж точно не хуже макросов. Будет интересно посмотреть не результат даже с каптом
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Ну для компайлер плагинов просто еще апи нет. Я думаю, что когда будет, оно будет уж точно не хуже макросов. Будет интересно посмотреть не результат даже с каптом
Двигаю как могу)
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Ну для компайлер плагинов просто еще апи нет. Я думаю, что когда будет, оно будет уж точно не хуже макросов. Будет интересно посмотреть не результат даже с каптом
Ну и ещё у макросов есть одно преимущество, они умеют раскрываться в месте вызова, им для этого не нужны аннотации и поэтому оно очень органично вписывается в язык
источник

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Ну и ещё у макросов есть одно преимущество, они умеют раскрываться в месте вызова, им для этого не нужны аннотации и поэтому оно очень органично вписывается в язык
Мы пока не знаем, как будут работать компайлер плагины, точнее как делать их более эффективными. Возможно можно будет подрубать их локально. Не знаю
источник

AN

Alexander Nozik in Kotlin Community
Разумеется, хотелось бы иметь возможность писать прямо код, но при этом надо не дойти до шаблонов
источник

AS

Andrei Shikov in Kotlin Community
Alexander Nozik
Мы пока не знаем, как будут работать компайлер плагины, точнее как делать их более эффективными. Возможно можно будет подрубать их локально. Не знаю
Почему же, можно посмотреть как работает та же сериализация
источник

AN

Alexander Nozik in Kotlin Community
Andrei Shikov
Почему же, можно посмотреть как работает та же сериализация
Не публичного API для создания плагинов
источник

AS

Andrei Shikov in Kotlin Community
Alexander Nozik
Не публичного API для создания плагинов
Документированного скорее ;)
источник

AN

Alexander Nozik in Kotlin Community
Andrei Shikov
Документированного скорее ;)
Вообще никакого нет. Он еще не устаканился толком
источник

AD

Apache DOG™ in Kotlin Community
Alexey Otts
По уровню магии абсолютно одно и тоже, ты не знаешь что там внутри коробки тебе сделает макрос и всё это усугубляется тем что, не все простые смертные умеют читать макросы. С рефлексией ещё туды сюды можно разобраться.
Я конечно тоже сильно против рефлексии, но макросы в этом плане не сильно лучше увы
Нет, не одно и тоже, вообще нет. Макрос работает на этапе компиляции, а рефлексия как попало
источник

AO

Alexey Otts in Kotlin Community
Apache DOG™
Нет, не одно и тоже, вообще нет. Макрос работает на этапе компиляции, а рефлексия как попало
Ты говорил про магичность, не съзжай
источник

IK

Igor Kalishevsky in Kotlin Community
Раз вы тут про около-сериализацию говорите, есть ли нормальный пример использования коллекций дженериков для kotlinx.serialization? Я нашёл единственный тест с дженериками на гитхабе, и он мало проясняет чего
источник

AD

Apache DOG™ in Kotlin Community
Alexey Otts
Ты говорил про магичность, не съзжай
Рефлексия = магия потому что рантайм
источник

AD

Apache DOG™ in Kotlin Community
Рантайм непонятен в принципе без завтипов
источник

AO

Alexey Otts in Kotlin Community
🤦‍♂
источник

AO

Alexey Otts in Kotlin Community
Магия - это всё, чего код ты не можешь прочитать
источник

AO

Alexey Otts in Kotlin Community
Apache DOG™
Рантайм непонятен в принципе без завтипов
И как завтипы относятся к рантайму?
источник

AN

Alexander Nozik in Kotlin Community
Alexey Otts
🤦‍♂
+
источник

AN

Alexander Nozik in Kotlin Community
Igor Kalishevsky
Раз вы тут про около-сериализацию говорите, есть ли нормальный пример использования коллекций дженериков для kotlinx.serialization? Я нашёл единственный тест с дженериками на гитхабе, и он мало проясняет чего
А дженерик фиксированный или полиморфный?
источник

IK

Igor Kalishevsky in Kotlin Community
Alexander Nozik
А дженерик фиксированный или полиморфный?
Полиморфный. Я запилил пока fallback через полиморфизм с доп @type филдом, но руками в клиенте кастить не хочется.

interface DTOMarker

@Serializable
@SerialName("Item")
data class Item(
   val id: Long,
   val text: String
) : DTOMarker


data class Box<T : DTOMarker>(
   val pageSize: Int,
   val content: Collection<T>
)
источник