У меня есть класс, похожий на это,определить `Codec` рекурсивной структуры данных
case class Foo (bar: Int, foos: Vector[Foo])
определить Codec[Foo]
, я попытался это,
def fc = shapeless.Lazy((int32 ~~ vector(fc)).widenOpt((Foo.apply _).tupled, Foo.unapply _))
Но это не сработало, так как scodec бросает StackOverflowError
. Каков правильный способ сделать это?
спасибо за предложение. Я попробовал, но все же закончил с SOE. На самом деле даже исходное определение, которое я дал, не вызывало ошибки компиляции, только когда я попытался распечатать его в консоли во время выполнения, процесс, разбитый с помощью SOE – Sheng
, был бы замечательным, если Scodec может предоставить какой-то пример, описывающий, как создайте Codec для дерева как структуру данных. Я думаю, что моя проблема сводится к этому. – Sheng
, но это вызывает SOE во время выполнения. def fc: Codec [Foo] = {import shapeless._; lazily ((int32 :: vector (fc)). как [Foo])} В чем разница? – Sheng