Size: a a a

Scala User Group

2020 May 08

ЮБ

Юрий Бадальянц... in Scala User Group
Мне важна скорость в моём кейсе
источник

VS

Vyatcheslav Suharnik... in Scala User Group
Лучше все же сделать jmh тест 🙂 Может, тебе будет достаточно производительности scodec. С ним серилизация ну очень просто пишется, DSL огонь просто.
источник

K

Kai in Scala User Group
Oleg ℕizhnik
Не, вопрос шёл о том, как дерево заменить, т.е. имплиситы явно не писать.
Я так понял кай предложил сделать макро имплисит в самом компаньоне тайпкласса, который будет анализировать сигнатуру кейскласса, а в сигнатуре кейскласса приписывать какие-то дамми имплиситы.
Правда, не очень понял, как это поможет деривировать с параметрами, дописывать новые способы деривации или репортить в компиляции о конкретных отсутствующих кодеках для полей
Не, не в компаньоне тайпкласса, у тебя просто должна быть дерайвилка которую можно вызвать имплицитно, не важно где. И у тебя есть абстрактный класс который аллоцирует финитное количество implicit val полей и который в конструкторе вызывает имплиситы и расставляет их по полям с нужными типами, оставляя незаполненным полям юзлесс тип например Null
источник

K

Kai in Scala User Group
И ты этот один класс наследуешь в компаньонах кейс классов чтобы дерайвить пачки имплиситов
источник

Oℕ

Oleg ℕizhnik in Scala User Group
А как конпелятор типы имплиситов поймёт
источник

Oℕ

Oleg ℕizhnik in Scala User Group
типа
object Foo extends Derivation3[Foo, Codec, Swagger, Loggable] ?
источник

K

Kai in Scala User Group
Как обычно, у тебя все типы резолвятся во время extends
источник

K

Kai in Scala User Group
ага
источник

Oℕ

Oleg ℕizhnik in Scala User Group
в принцопе неплохо
источник

Oℕ

Oleg ℕizhnik in Scala User Group
правда, чтобы параметры передать придётся делать
extends Derivation3[Foo](codec(snakeCase), Swagger, Loggale)
А это, по всей видимости тайпмемберы
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и потенциальные проблемы с выводом типов во время запроса имплиситов
источник

K

Kai in Scala User Group
Ты можешь передавать строчки тайп параметрами и звать eval внутри макроса :^)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Т.е. скала 2.13 онли, и отсутствие тайпчека
источник

λ

λoλcat in Scala User Group
В 2.13.2 сломали -Wunused:imports?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
не замечал
источник

λ

λoλdog in Scala User Group
λoλcat
В 2.13.2 сломали -Wunused:imports?
вроде нет
источник

λ

λoλcat in Scala User Group
А проверьте? У меня на двух проектах перестало работать
источник

λ

λoλcat in Scala User Group
Откат на 2.13.1 помогает
источник

SR

Sergey Rublev in Scala User Group
λoλcat
В 2.13.2 сломали -Wunused:imports?
Да, есть такое и у нас
источник

AS

Aleksei Shashev in Scala User Group
у меня работает нормально
источник