首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coproducts找不到参数auto: scodec.codecs.CoproductBuilderAuto的隐式值

Coproducts找不到参数auto: scodec.codecs.CoproductBuilderAuto的隐式值
EN

Stack Overflow用户
提问于 2015-06-14 23:08:29
回答 1查看 579关注 0票数 2

我试图定义一个与EELink全球定位系统通信的Scodec共同产品编解码器。

以下是代码:

代码语言:javascript
复制
import scodec.Codec
import scodec.bits.ByteVector
import scodec.codecs._

trait Message
object Message {
  implicit val discriminated: Discriminated[ Message, Int ] = Discriminated(uint8)
  val codec: Codec[ Message ] = Codec.coproduct[ Message ].discriminatedByIndex(uint8)
}

case class GpsId(value: ByteVector)
object GpsId {
  val codec = bytes(8).as[ GpsId ]
}

case class SerialNumber(value: Int)
object SerialNumber {
  val codec = uint16.as[ SerialNumber ]
}

case class Header(protocolNumber: Int, length: Int, serial: SerialNumber)
object Header {
  val codec = (uint8 :: uint16 :: SerialNumber.codec).as[ Header ]
}

case class Login(header: Header, id: GpsId, language: Int) extends Message
object Login {
  val protocolNumber = 0x01
  implicit val discriminator: Discriminator[ Message, Login, Int ] = Discriminator(protocolNumber)
  implicit val codec: Codec[Login] = (Header.codec :: GpsId.codec :: uint8).as[ Login ]
}

我得到了以下信息:

代码语言:javascript
复制
Error:(14, 48) could not find implicit value for parameter auto: scodec.codecs.CoproductBuilderAuto[com.tecnoguru.ridespark.gps.eelink.messages.Message]
  val codec: Codec[ Message ] = Codec.coproduct[ Message ].discriminatedByIndex(uint8)
                                           ^

我看过Scodec - Coproducts could not find implicit value for parameter auto: scodec.codecs.CoproductBuilderAuto,但它没有帮助,从我所看到的,我正在正确地定义编解码器和鉴别器。

我在Scala 2.11.5上运行,有scodec-core 1.7.0和scodec-位1.0.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 01:40:22

现在存在的代码需要两个小的更改:

  1. Message的特征必须是sealed,否则,无形状将不会提供Generic.Aux[Message, SomeCoproduct]实例。
  2. Codec.coproduct[Message]的调用必须在定义所有子类型之后进行。将同伴移到文件的末尾就足够了。

使用这两个更改,示例将成功编译。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30835502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档