1

サイトのgithubではとても簡単できれいに見えるので、scala-picklingを使用しようとしています。しかし、私はこの単純なREPLでそれを使用することに失敗しています:

scala> import scala.pickling._
import scala.pickling._

scala> import scala.pickling.Defaults._
import scala.pickling.Defaults._

scala> import binary._
import binary._

scala> class Xpto { var a = 0D; var b = 0 }
defined class Xpto

scala> val v = new Xpto { a = 1.23; b = 5 }
v: Xpto = $anon$1@636d2b03

scala> v.pickle
<console>:19: error: type mismatch;
 found   : v.type (with underlying type Xpto)
 required: ?{def pickle: ?}
Note that implicit conversions are not applicable because they are ambiguous:
 both method PickleOps in package pickling of type [T](picklee: T)pickling.PickleOps[T]
 and method pickleOps in trait Ops of type [T](picklee: T)scala.pickling.PickleOps[T]
 are possible conversion functions from v.type to ?{def pickle: ?}
          v.pickle
            ^
<console>:19: error: value pickle is not a member of Xpto
                  v.pickle
                    ^

なにが問題ですか?

たとえば、この同じタイプの質問で、StackOverflow の他の問題にアクセスしました。

Scala pickling: 自分のクラス用のシンプルなカスタム ピックラー?

Obs .: build.sbtでこの参照を使用しています:

"org.scala-lang.modules" %% "scala-pickling" % "0.10.1"
4

2 に答える 2

0

すごい!走る!

新しい新鮮なscalaコンソールを開始しました。

build.sbt の scala.pickling への参照を使用していました。

"org.scala-lang" %% "scala-pickling" % "0.10.1"

そして今私は使用しています

"org.scala-lang.modules" %% "scala-pickling" % "0.10.1"

Scala 2.11.6も利用しています

今では完全に機能し、本当にシンプルです。

scala> import scala.pickling._
import scala.pickling._

scala> import scala.pickling.binary._
import scala.pickling.binary._

scala> import scala.pickling.Defaults._
import scala.pickling.Defaults._

scala> class Xpto { var a = 0D; var b = 0; }
defined class Xpto

scala> val v = new Xpto { a = 1.23; b = 4; }
v: Xpto = $anon$1@1e7bd4df

scala> v.pickle
res0: pickling.binary.pickleFormat.PickleType = BinaryPickle([0,0,0,52,46,108,105,110,101,55,46,46,114,101,97,100,46,46,105,119,46,46,105,119,46,46,105,119,46,46,105,119,46,46,105,119,46,46,105,119,46,46,105,119,46,46,105,119,46,46,97,110,111,110,46,49,63,-13,-82,20,122,-31,71,-82,0,0,0,4])

私の他のライブラリ参照がそのあいまいな参照を生成していたかどうかはわかりません。build.sbtの私の参照は次のとおりです。

libraryDependencies ++= Seq(
  "log4j" % "log4j" % "1.2.17",
  "javax.transaction" % "jta" % "1.1",
  "com.typesafe.akka" %% "akka-actor" % "2.3.10",
  "com.typesafe.akka" %% "akka-testkit" % "2.3.10",
  "org.scalatest" %% "scalatest" % "3.0.0-SNAP4" % "test",
  "org.apache.commons" % "commons-io" % "1.3.2",
  "com.typesafe.akka" %% "akka-slf4j" % "2.3.11",
  "ch.qos.logback" % "logback-classic" % "1.0.9",
  "org.scala-lang.modules" %% "scala-pickling" % "0.10.1"
)

マーカスに感謝します。

于 2015-08-23T14:04:03.940 に答える