2
我有一类这样看,定义`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
。这样做的正确方法是什么?
感谢您的建议。我尝试过,但仍然以国有企业而告终。事实上,即使我给没有引起编译错误的原始定义,只有当我试图在运行时将其打印在控制台中,过程与国有企业 – Sheng
崩溃将是巨大的,如果scodec能够提供某种形式的例子说明如何为树形数据结构创建一个编解码器。我认为我的问题归结为这一点。 – Sheng
但这会在运行时抛出SOE。 def fc:Codec [Foo] = {import shapeless._; lazily((int32 :: vector(fc))。as [Foo])}有什么区别? – Sheng