Size: a a a

Scala User Group

2020 January 17

λ

λoλegΥch in Scala User Group
type Id = String
источник

M

Mikhail in Scala User Group
λoλegΥch
кстати вопрос а зачем там обьекты обьявляются почему нельза просто type Id[T] = T @@ Id
Тогда Id[String] = Id[String]. А если object OrderId extends TaggedType[String] && object OtherId extends TaggedType[String] , то OrderId != OtherId
источник

λ

λoλegΥch in Scala User Group
не, Id[Order]
источник

AH

Ayrat Hudaygulov in Scala User Group
λoλegΥch
не, Id[Order]
А если в одной сущности 10 айди? И все обозначают одно и то же
источник

λ

λoλegΥch in Scala User Group
точнее type Id = String, type Id[T] = Id @@ T
источник

AH

Ayrat Hudaygulov in Scala User Group
У нас вот для обозначения товара, без шуток есть

ItemId
WalmartId
LegacyWalmartId
Gtin
TrimmedGtin
SupplyItemId
ProductId
SkuId
MerchantItemId

И я наверняка забыл что-то
источник

λ

λoλegΥch in Scala User Group
и не надо для каждого ордера или юзера обьекты обьявлять
источник

M

Mikhail in Scala User Group
λoλegΥch
не, Id[Order]
аа. Отдельный object дает отдельный якорь, отдельный автоскоуп. Но, чтобы более детально ответить, надо вспоминать все нюансы
источник

λ

λoλegΥch in Scala User Group
Ayrat Hudaygulov
У нас вот для обозначения товара, без шуток есть

ItemId
WalmartId
LegacyWalmartId
Gtin
TrimmedGtin
SupplyItemId
ProductId
SkuId
MerchantItemId

И я наверняка забыл что-то
ну у нас есть Id[T] и Id[User], Id[Walmart], Id[чтоугодно]
источник

M

Mikhail in Scala User Group
Ayrat Hudaygulov
У нас вот для обозначения товара, без шуток есть

ItemId
WalmartId
LegacyWalmartId
Gtin
TrimmedGtin
SupplyItemId
ProductId
SkuId
MerchantItemId

И я наверняка забыл что-то
он имеет ввиду, почему не использовать Id[Walmart], Id[SupplyItem] и т.д., ведь это почти тоже самое по записи, что и WalmartId, SupplyItemId. Типа где выигрыш в этом случае с object
источник

AH

Ayrat Hudaygulov in Scala User Group
Mikhail
он имеет ввиду, почему не использовать Id[Walmart], Id[SupplyItem] и т.д., ведь это почти тоже самое по записи, что и WalmartId, SupplyItemId. Типа где выигрыш в этом случае с object
И правда, где выигрыш. Можно ж один кейс класс написать тогда
источник

AH

Ayrat Hudaygulov in Scala User Group
Хотя не, все равно придется кучу типов создавать
источник

λ

λoλegΥch in Scala User Group
не, тип один
источник

λ

λoλegΥch in Scala User Group
всмысле конструктор типов
источник

λ

λoλegΥch in Scala User Group
Id[T]
источник

AH

Ayrat Hudaygulov in Scala User Group
λoλegΥch
всмысле конструктор типов
Конструктор один, но один фиг надо будет создавать тонну трейтов маркерных чтобы создать конкретные Id[...]
источник

M

Mikhail in Scala User Group
@OlegYch_real вобще супертаггет появились после того, как я поглядел на либу @tvaroh . Меня зацепило, что можно использовать синтаксис как AnyVal , но без всех его болячек и что можно безопасно скастить OrderId @@ Array[String] => Array[OrderId]. Плюс дополнил плюшками - что можно делать это для arbitrary level. Потом еще можно строить иерархию дальше типа trait StringId extends Tagged[String] и выводить тайпклассы для ограниченного поддерева
источник

λ

λoλegΥch in Scala User Group
Ayrat Hudaygulov
Конструктор один, но один фиг надо будет создавать тонну трейтов маркерных чтобы создать конкретные Id[...]
не надо, у тебя уже есть Walmart Order и тп
источник

M

Mikhail in Scala User Group
там еще для мультитагинга удобный синтаксис (но опыту мультитеги в бизнес логике я нигде не использую)
источник

λ

λoλegΥch in Scala User Group
это полезно
источник