0

我正在尝试 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 存储库并 grep 了源代码,我只在示例代码中看到了这一点。该符号来自哪里,为什么我不能使用它?

4

1 回答 1

1

如果您的进口是有序的,那么这应该可以工作:

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

于 2015-01-11T23:26:29.293 回答