VS
trait завести - это я могу
Size: a a a
VS
λ
M
KS
read[T](s: String): T
которая парсит из строки значение типа T
. Т.к. нужна типобезопасность, то добавляю имплиситный декодер: read[T](s: String)(implicit decoder: String => T): T
ну и понятно, если декодер определен для T
то все хорошо.def decodeStringEnum[T <: StringEnumEntry: StringEnum](s: String): T =
implicitly[StringEnum[T]].withValue(s)
г
только вот так:l theChoice = TheReader.read[Choice]("SECOND")(StringCodecs.decodeStringEnum[Choice])Вот здесь сделал пример, для наглядности с Int и с енамом, Int - это то как хочется для енамов....
// Choice - это enumeratum енам
implicit val decodeChoice: (String => Choice) = StringCodecs.decodeStringEnum[Choice]
, там же рядом с decodeInt
Choice
не получится - компилятор не может угадать, какой тип ты хотел получить в итоге. Указать придется либо у val либо при вызове методаTheReader
тайпклассом. У тебя написано не то же самое - ты определил свой read
, который требует какую-то функцию, а не инстанс тайпкласса.VS
M
extends Enum
не порождает какого-либо компаньона с имплиситом внутри. Т.е. тебе все равно для твоего инстанса надо в любом виде его явно определить самомуλ
implicit val decodeChoice: (String => Choice) = StringCodecs.decodeStringEnum[Choice]
, там же рядом с decodeInt
Choice
не получится - компилятор не может угадать, какой тип ты хотел получить в итоге. Указать придется либо у val либо при вызове методаTheReader
тайпклассом. У тебя написано не то же самое - ты определил свой read
, который требует какую-то функцию, а не инстанс тайпкласса.KS
λ
KS
M
extends Enum
не порождает какого-либо компаньона с имплиситом внутри. Т.е. тебе все равно для твоего инстанса надо в любом виде его явно определить самомуVS
implicit val decodeChoice: (String => Choice) = StringCodecs.decodeStringEnum[Choice]
, там же рядом с decodeInt
Choice
не получится - компилятор не может угадать, какой тип ты хотел получить в итоге. Указать придется либо у val либо при вызове методаTheReader
тайпклассом. У тебя написано не то же самое - ты определил свой read
, который требует какую-то функцию, а не инстанс тайпкласса.VS
KS
λ
λ
λ
VS
KS
KS