Size: a a a

Scala User Group

2021 July 09

λ

λoλcat in Scala User Group
источник

Oℕ

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

Oℕ

Oleg ℕizhnik in Scala User Group
или там RC был
источник

λ

λoλcat in Scala User Group
Не, только что. Уже успешно собрал на ней проектик
источник
2021 July 10

SA

Sergey Alaev in Scala User Group
Не напомните, чем opaque type хуже tagged type?
источник

λ

λoλcat in Scala User Group
Патматч
источник

SA

Sergey Alaev in Scala User Group
А зачем их матчить, если они не входят в иерархии наследования?
источник

λ

λoλcat in Scala User Group
opaque type Email <: String = String
vs
type Email = String @@ EmailTag
источник

λ

λoλcat in Scala User Group
Что будет, если String поматчить по Email? Тэг можно вычислить за счет подмеса. Опак нельзя
источник

λ

λoλcat in Scala User Group
Зачем - не знаю
источник

SA

Sergey Alaev in Scala User Group
Т.е. у нас есть String, и нам нужно понять, является ли он Email?
источник

λ

λoλcat in Scala User Group
Ну да. Я правда не уверен, что это хороший паттерн. То есть даже не знаю, хуже это или лучше. Или одинаково
источник

SA

Sergey Alaev in Scala User Group
Так информации о тегах нет в рантайме, матчинг не должен работать?
источник

λ

λoλcat in Scala User Group
Там же класс каст идет к String with EmailTag
источник

λ

λoλcat in Scala User Group
Надо проверить конечно всё, что я тут написал.
источник

SA

Sergey Alaev in Scala User Group
java.lang.String - он final. В tagged types это наследование "липовое", в рантайме будет тот же String. За это его и любят больше, чем кейс классы - за отсутствие оверхеда
источник

V

Vλadimir in Scala User Group
источник

λ

λoλcat in Scala User Group
Да, всё верно.
источник

λ

λoλcat in Scala User Group
Выше можно не читать.
источник

λ

λoλcat in Scala User Group
Дело там даже не столько в финальности String, сколько в способе тэгирования.
источник