Size: a a a

Scala User Group

2021 July 10

Oℕ

Oleg ℕizhnik in Scala User Group
не думаю, что тут уместно сравнение, одно - механизм scala 3, второе - паттерн, второе можно реализовать через первое в scala 3
источник

λ

λoλcat in Scala User Group
Тэгирования через подмес обычного трейта проходит чек на каст
источник

Oℕ

Oleg ℕizhnik in Scala User Group
opaque type Tagged[Base, Tag] <: Base = Base
источник

NV

Nikita Vilunov in Scala User Group
и зачем так писать
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Чтобы отличать сорта Base
UUID Tagged Customer
UUID Tagged Invoice
и добавлять разные гивены для разных теганных штук
источник

NV

Nikita Vilunov in Scala User Group
вместо того чтобы писать
opaque type CustomerId <: UUID = UUID
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну для чего шейплесс теги юзали
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Да, вместо того, чтобы объявлять импортироватт по типу  для каждого теганного бейза и подключать инстансы с помощью миксинов в компаньон можно просто объявлять теги
источник

NV

Nikita Vilunov in Scala User Group
спасибо не понял
источник

NV

Nikita Vilunov in Scala User Group
чтобы было меньше бойлерплейта?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Тогда

object CustomerId extends UUUDIdComp[Customer]

type CustomerId = CustomerId.T

заменяется просто на

type CustomerId = UUID Tagged Customer

мало того, т.к. это всё приложени, одного тайп-конструктора можно больше обобщённых функций написа
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну или даже проще

type CustomerId = Uuid[Customer]
источник
2021 July 11

SA

Sergey Alaev in Scala User Group
Кто-нибудь видел хорошую библиотечку кеширования на скале? Чтобы loading cache, с жизненным циклом каждого entry и самого кеша на Resource, с разными режимами инвалидации, и дружелюбную к cancellations?
источник

λ

λoλdog in Scala User Group
Ты уже спрашивал же
источник

a

aeon in Scala User Group
А что ему ответили тогда?
источник

AD

Apache DOG™ in Scala User Group
Обвязку вокруг гуавы/каффеина?
источник

EH

Eric Hartmann in Scala User Group
Что-то похожее есть https://github.com/evolution-gaming/scache
100% battle-proven, 0% documented.
источник
2021 July 12

SA

Sergey Alaev in Scala User Group
Похоже на правду, спасибо. Но, судя по коду, загрузка значения в loading cache uncancellable, это не очень хорошо.
источник

EH

Eric Hartmann in Scala User Group
да, насколько я помню, так было сдклано by design
> possibly not yet loaded
https://github.com/evolution-gaming/scache/blob/master/src/main/scala/com/evolutiongaming/scache/Cache.scala#L68
источник

SA

Sergey Alaev in Scala User Group
Это другое - когда кто-то дернул getOrUpdate, запустилось асинхронное вычисление значения, и тут вызвали remove. А дальше уже возможны варианты - кенселить загрузку или нет...
источник