Size: a a a

Scala User Group

2020 April 28

AS

Aleksei Shashev in Scala User Group
Mikhail
я как раз ловил проблемы, что в рантайме AnyVal был не отличим от типа над которым была обертка. - это не проблема, это то как он должен себя везти. А вместо этого он на каждый чих скатывается в свои ограничения. А точнее в пункт про cannot be used in type tests
ну я так понимаю, что в данном случае проблема в обращении getClass. Если этого не делать, то проблемы и не будет.
источник

AS

Aleksei Shashev in Scala User Group
Mikhail
Ну и плюс бесконечные мусорные  myval.value - чтобы достучаться до самого значения. Когда код усыпан этим - прям буэээ. А теги дают гарантию отсутствия обертки + могут быть использованы напрямую в качестве основания (а если нужно исключить это - ньютайпы - и опять с гарантией отсутствия оберток (правда обьективизация все же будет - примитивы перейдут в обьектные эквиваленты (только для ньютайпов, в тегах так же примитивы)))
Спасибо за подробное разъяснение 👍
источник

M

Mikhail in Scala User Group
Aleksei Shashev
ну я так понимаю, что в данном случае проблема в обращении getClass. Если этого не делать, то проблемы и не будет.
Ты не правильно понял. Это просто пример. А проблема, что класс энивал на практике в проектах дальше хеллоуворлда материализуется по каждому чиху и там уже не уследишь и никакая дисциплина не поможет)
источник

AS

Aleksei Shashev in Scala User Group
Mikhail
Ты не правильно понял. Это просто пример. А проблема, что класс энивал на практике в проектах дальше хеллоуворлда материализуется по каждому чиху и там уже не уследишь и никакая дисциплина не поможет)
хм, какая-то странная фича тогда :(
источник

M

Mikhail in Scala User Group
Aleksei Shashev
хм, какая-то странная фича тогда :(
Поэтому энивалы никто и не юзает (разве что код старый или человек не в курсе за теги,ньютайпы). Разве что для опсов) implicit class Ops() extends AnyVal
источник

ЮБ

Юрий Бадальянц in Scala User Group
Aleksei Shashev
хм, какая-то странная фича тогда :(
Ждём opaque types
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
Поэтому энивалы никто и не юзает (разве что код старый или человек не в курсе за теги,ньютайпы). Разве что для опсов) implicit class Ops() extends AnyVal
Энивалы юзают
источник

Oℕ

Oleg ℕizhnik in Scala User Group
не только для опсов
источник

M

Mikhail in Scala User Group
Oleg ℕizhnik
Энивалы юзают
Согласен, не знаю правда зачем)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Mikhail
Согласен, не знаю правда зачем)
Энивал в поле класса хранится всё равно в развёрнутом виде. И передаётся в аргументах тоже.
Поэтому даже в случае рефайндов и подобных либ выходит, что обёртки плавают только в коротких промежутках, часто не пересекая асинхронных барьеров и оставаясь всегда в янггене
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Поэтому это простой и не самый худший способ удешевить обёртку
источник

λ

λoλcat in Scala User Group
Юрий Бадальянц
Ждём opaque types
В 3.2?
источник

ЮБ

Юрий Бадальянц in Scala User Group
λoλcat
В 3.2?
В 3.0 же
источник

AS

Aλeχander Semenov in Scala User Group
А tofu env с F[_] как использовать? Через HasContext?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Конкретизируйте вопрос
источник

Oℕ

Oleg ℕizhnik in Scala User Group
обычно используете
источник

Oℕ

Oleg ℕizhnik in Scala User Group
F[_] : Monad : Foo : Bar
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
А есть какие-то best practices по обработке ошибок в скале?
источник

K

Kai in Scala User Group
Λrtem Ohanjanyan
А есть какие-то best practices по обработке ошибок в скале?
Bifunctor IO
источник

ΛO

Λrtem Ohanjanyan in Scala User Group
Kai
Bifunctor IO
Для этого нужен IO с параметризируемым типом ошибки?
источник