Size: a a a

Scala User Group

2020 May 16

ЮБ

Юрий Бадальянц... in Scala User Group
Просто подумал, что одним было бы лаконичнее
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Просто подумал, что одним было бы лаконичнее
Может быть.
Правда следующий вопрос будет "а что если у дериваторов разные наборы параметров"
источник

Oℕ

Oleg ℕizhnik in Scala User Group
И тогда нужно будет отмечать какие параметры куда передаватт
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Ну да
источник

ЮБ

Юрий Бадальянц... in Scala User Group
тест ща сделаю. И в доку добавлю
источник

Oℕ

Oleg ℕizhnik in Scala User Group
А потом " а что если они разные типы возвращают"
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Типа как Encoder.AsObject vs Encoder vs Encoder.AsArray
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Юрий Бадальянц
Просто подумал, что одним было бы лаконичнее
Но вообще почему

@derive(eq(universal=true))

более лаконично, чем

@derive(eq.universal)
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Oleg ℕizhnik
Но вообще почему

@derive(eq(universal=true))

более лаконично, чем

@derive(eq.universal)
Оооо, я ваще чёт не подумал про такой вариант. Так и сделаю, выглядит лучше, и отыскать проще.
источник

D

Deλ✨ in Scala User Group
Юрий Бадальянц
Фига народу в последнее время приходит
Олег пропиарил
источник

E

Ermac10k in Scala User Group
Привет! Вопрос: в сервисе нужно в приходящем из вне жсоне заменить значение одного поля, если оно существует.
Проблема 1: жсон огромен и имеет очень большую степень вложенности.
Проблема 2: часть полей динамическая, т.е. значения некоторых полей - это ключи других.
Сделал на json4s через mapField & case.
Но вложенность кейзов - 5-7 уровней.
Ревьюеры ругаются, мол некрасиво.
Но сделать дто нереально из-за проблемы 2. А экстрактить в мапу - так та же вложенность, только getOrElse(asInstanxeOf(... вместо кейза - в итоге не менее уродливо.
Существует ли какое-то альтернативное решение?
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Ermac10k
Привет! Вопрос: в сервисе нужно в приходящем из вне жсоне заменить значение одного поля, если оно существует.
Проблема 1: жсон огромен и имеет очень большую степень вложенности.
Проблема 2: часть полей динамическая, т.е. значения некоторых полей - это ключи других.
Сделал на json4s через mapField & case.
Но вложенность кейзов - 5-7 уровней.
Ревьюеры ругаются, мол некрасиво.
Но сделать дто нереально из-за проблемы 2. А экстрактить в мапу - так та же вложенность, только getOrElse(asInstanxeOf(... вместо кейза - в итоге не менее уродливо.
Существует ли какое-то альтернативное решение?
Есть оптики для json
источник

ЮБ

Юрий Бадальянц... in Scala User Group
В Circe есть модуль
источник

Oℕ

Oleg ℕizhnik in Scala User Group
скину ссылку за юру
https://circe.github.io/circe/optics.html
источник

Oℕ

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

Oℕ

Oleg ℕizhnik in Scala User Group
для динамических нужно будет свои оптики написать
источник

E

Ermac10k in Scala User Group
Спасибо, буду разбираться
источник

Oℕ

Oleg ℕizhnik in Scala User Group
т.е. это будет что-то вроже

_root.foo.bar.each.baz ^|-?
  myDynamicField ^|->>     _.root.bar.each.quux
источник

E

Ermac10k in Scala User Group
Просто интересно, почему такие либы не гуглятся общим поиском? Только по "сарафанному" находятся?)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ermac10k
Просто интересно, почему такие либы не гуглятся общим поиском? Только по "сарафанному" находятся?)
circe - самая популярная json либа в scala, инфа про оптики у неё на основном сайте
не знаю, почему не гуглится
источник