Size: a a a

Scala User Group

2020 November 30

VS

Vladimir Sapronov in Scala User Group
Михаил
При чём тут создатели circe? Интеграция енумератум и кирки лежит в репозитории енумератума. По истории гита я там тоже Трэвиса Брауна не вижу
Ну OK - в любом случае, люди уважаемые
источник

VS

Vladimir Sapronov in Scala User Group
λoλegΥch
не надо использовать автоматическое декодирование
внезапно! а почему?
источник

λ

λoλegΥch in Scala User Group
у нижника наверно есть какая-то доходчивая ссылка
источник

VS

Vladimir Sapronov in Scala User Group
и что вручную писать кодеки?
источник

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
и что вручную писать кодеки?
полуавто (semiauto -> google)
источник

KS

Kirill Shelopugin in Scala User Group
У Enum в наследуемом трейте уже есть методы для парсинга. Твой компаньон и так будет наследовать этот трейт. Положить в компаньон инстансы - обычный подход, поэтому в этом случае чтобы не определять каждый раз декодеры в компаньоне каждого энума, достаточно отнаследоваться от трейта, который сам всё за тебя сделает, используя тот факт, что там и так уже есть метод для парсинга. Если бы можно было сделать так же для кейс-классов - было бы здорово. Получается, что людям дали возможность удобно автоматически сделать инстанс тайпкласса, примешав всего лишь один раз трейт к компаньону, а люди снова недовольны /shrug
источник

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
внезапно! а почему?
дакак минимум компиляции время долгое будет
источник

KS

Kirill Shelopugin in Scala User Group
Artem Sokolov
я правильно понимаю что обсуждается примешивание трейта (который определяет сериализацию) в компаньен доменного объекта и/или дто объекта?

мне казалось тайпклассы как раз про то чтобы ты имел чистый доменный объект, и для него вокруг настраивал нужные функциональности, не работая с ним напрямую.

не то чтобы я сильно против примешивать в компаньен, но попахивает антипаттерном и вообще кейк паттерном каким-то
Да. Мой case class MyData очень чистый, он ничего не знает ни про какие там тайпклассы.
источник

GP

Grigory Pomadchin in Scala User Group
норм работает если у тебя пара кейс классов
плохо работает когда у тебя 20
источник

GP

Grigory Pomadchin in Scala User Group
а 20 - не много
источник

VS

Vladimir Sapronov in Scala User Group
Grigory Pomadchin
полуавто (semiauto -> google)
да, т.е. на каждый тип надо
implicit val fooDecoder: Decoder[Foo] = deriveDecoder
источник

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
да, т.е. на каждый тип надо
implicit val fooDecoder: Decoder[Foo] = deriveDecoder
@JsonCodec аннотация есть
источник

KS

Kirill Shelopugin in Scala User Group
Vladimir Sapronov
да, т.е. на каждый тип надо
implicit val fooDecoder: Decoder[Foo] = deriveDecoder
Рекомендую https://github.com/manatki/derevo или как Гриша написал
источник

GP

Grigory Pomadchin in Scala User Group
ну дерево делает тож самое да
источник

KS

Kirill Shelopugin in Scala User Group
Только лучше!
источник

VS

Vladimir Sapronov in Scala User Group
Grigory Pomadchin
@JsonCodec аннотация есть
ты же понимаешь, я не люблю вписывать сериализацию в мои бизнесс объекты - люблю держать в сторонке
источник

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
ты же понимаешь, я не люблю вписывать сериализацию в мои бизнесс объекты - люблю держать в сторонке
источник

GP

Grigory Pomadchin in Scala User Group
аннотацию добавь для моделей
источник

KS

Kirill Shelopugin in Scala User Group
Они и будут в сторонке - в компаньоне.
источник

GP

Grigory Pomadchin in Scala User Group
и буешь знать - вот мои модели
и они сериализуемы
источник