Argonaut casecodec3?

Argonaut casecodec3?

我正在尝试 Argonaut 快速入门中的这个简单示例:

case class Address(street: String, number: Int, postcode: Int)

object Address {
  // Define codecs easily from case classes
  implicit def AddressCodecJson: CodecJson[Address] =
    casecodec3(Address.apply, Address.unapply)("street", "number", "post_code")
}

我在 casecodec3 上遇到编译错误。我克隆了 argonaut 和 scalaz 存储库并搜索了源代码,但我只在示例代码中看到了这一点。该符号来自哪里,为什么我不能使用它?

如果您的导入是有序的,那么应该就可以了:

import argonaut._, Argonaut._
case class Address(street: String, number: Int, postcode: Int)

object Address {
  implicit def AddressCodecJson: CodecJson[Address] =
  casecodec3(Address.apply, Address.unapply)("street", "number", "post_code")
}

在 REPL 中确保进入粘贴模式

scala> :paste 
// Entering paste mode (ctrl-D to finish)

import argonaut._, Argonaut._
case class Address(street: String, number: Int, postcode: Int)

object Address {
  implicit def AddressCodecJson: CodecJson[Address] =
  casecodec3(Address.apply, Address.unapply)("street", "number", "post_code")
}

// Exiting paste mode, now interpreting.

defined class Address
defined object Address

您在 github 中看不到源代码,因为源代码是生成的,例如 GeneratedCodecJsons.scala,如此处构建中所定义 https://github.com/argonaut-io/argonaut/blob/master/project/Boilerplate.scala