Size: a a a

Scala User Group

2021 February 09

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
Он плох тем, что нет сериализации, и что не совместим с джавой - в джавовые библиотеки его передавать не получится.
нет сериализации?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Vladimir Sapronov
Он плох тем, что нет сериализации, и что не совместим с джавой - в джавовые библиотеки его передавать не получится.
Это какая такая внешная джава библиотека требует от пользователя определения своего енама?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Из скалы если что можно спокойно дергать джавовые енамы, апи жява тайм посмотреть можно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sapronov
Он плох тем, что нет сериализации, и что не совместим с джавой - в джавовые библиотеки его передавать не получится.
честно говоря, я за всю свою короткую интер- и пост-ABAP скала жизнь видел только одно место, где несовместимость с java.lang.Enum создаёт некоторый дискомфорт, и даже там поправил руками
источник

VS

Vladimir Sapronov in Scala User Group
Oleg ℕizhnik
честно говоря, я за всю свою короткую интер- и пост-ABAP скала жизнь видел только одно место, где несовместимость с java.lang.Enum создаёт некоторый дискомфорт, и даже там поправил руками
ну отлично, значит прооблем нет
зачем вот только ключевое слово новое - видим просто чтобы сломать обратную совместимость
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Скала 3 вся без обратной совместимости, что позволяет делать огромный скачок вперёд
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Почему это плохо?
источник

VS

Vladimir Sapronov in Scala User Group
Grigory Pomadchin
нет сериализации?
Ну бывает такая нужда представить enum в виде строки в json.
И да, сейчас мне скажут enumeratum+circe - вот только они вообще так красиво выглядеть не будут как тут наверху написали.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sapronov
ну отлично, значит прооблем нет
зачем вот только ключевое слово новое - видим просто чтобы сломать обратную совместимость
Нет, ключевое слово много функций несёт.
1. Краткость
2. Авторасширение возвращаемого типа конструкторов
3. Больше автогенерируемых методов
4. Ограничение скоупа определения
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Но основное - краткость
источник

V

Vasiliy in Scala User Group
Vladimir Sapronov
ну отлично, значит прооблем нет
зачем вот только ключевое слово новое - видим просто чтобы сломать обратную совместимость
У всего свои причины. Создавать копию массива на каждый чих весьма непроизводительно. Ну вот знает человек, что такое чистота и слово функтор. Как это ему на практике поможет? Я спрашиваю про принципы. Паттерны идут уже после них. Ну а как понять то, где ничего нет? Принципов нет, определений нет, критериев нет. В этом вопрос. Перед этим ты изучал сам евент сурсинг и иже с ним. И только тогда понял, что нужны чистые функции. Или сначала изучал очереди и только потом приспичило узнать про идемпотентность, чтобы ретраи ничего не портили. А пока ты без очередей и сурсинга ничего это не нужно. Если есть ГОСТ, то его надо соблюдать. Если же его нет, то и соблюдать нечего. Требовать одного и того же соблюдения именования от разных ЯП весьма странно. С чего вдруг всё должно быть функциями без процедур?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Vladimir Sapronov
Ну бывает такая нужда представить enum в виде строки в json.
И да, сейчас мне скажут enumeratum+circe - вот только они вообще так красиво выглядеть не будут как тут наверху написали.
также и будут
источник

Oℕ

Oleg ℕizhnik in Scala User Group
object Look extends Enum[Look] CirceEnum[Look]
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Vladimir Sapronov
Ну бывает такая нужда представить enum в виде строки в json.
И да, сейчас мне скажут enumeratum+circe - вот только они вообще так красиво выглядеть не будут как тут наверху написали.
@derive(encoder)
sealed trait Look
case object IAm extends Look
case object Enum extends Look
case object TrustMe extends Look
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Готово
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Обычно я делаю себе сразу пак трейтов типа

trait PONVEnum[E <: EnumEntry] extends Enum[E]
with CirceEnum[E]
with SwaggerEnum[E]
with PostgresEnum[E]
with LogEnum[E]
with ....
источник

VS

Vladimir Sapronov in Scala User Group
Vasiliy
У всего свои причины. Создавать копию массива на каждый чих весьма непроизводительно. Ну вот знает человек, что такое чистота и слово функтор. Как это ему на практике поможет? Я спрашиваю про принципы. Паттерны идут уже после них. Ну а как понять то, где ничего нет? Принципов нет, определений нет, критериев нет. В этом вопрос. Перед этим ты изучал сам евент сурсинг и иже с ним. И только тогда понял, что нужны чистые функции. Или сначала изучал очереди и только потом приспичило узнать про идемпотентность, чтобы ретраи ничего не портили. А пока ты без очередей и сурсинга ничего это не нужно. Если есть ГОСТ, то его надо соблюдать. Если же его нет, то и соблюдать нечего. Требовать одного и того же соблюдения именования от разных ЯП весьма странно. С чего вдруг всё должно быть функциями без процедур?
ну пслушайте, все как бы классно, но....
енамы как таковые в скале были, просто про них никто не любит вспоминать: Enumeration
не любят про них вспоминать про них, потому что они были и есть epic fail
этот провал плавал 14 лет и вот наконец-то дошли руки и академиков до фикса
о чем спор? что не было косячных абсолютно енамов? или что их вправили быстрее чем, за 14 лет?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
и потом просто
object Look extends PONVEnum[Look]
источник

GP

Grigory Pomadchin in Scala User Group
Vladimir Sapronov
Ну бывает такая нужда представить enum в виде строки в json.
И да, сейчас мне скажут enumeratum+circe - вот только они вообще так красиво выглядеть не будут как тут наверху написали.
ты чет путаешь, силд трейты и кейс классы все автовыводятся
источник

VS

Vladimir Sapronov in Scala User Group
не готово, потому что никто "IAm" в json не будет посылать
источник