scala – 播放Iteratees:简单文件迭代的错误
发布时间:2020-12-16 19:25:22 所属栏目:安全 来源:网络整理
导读:我现在正试图围绕调查员和Iteratees的想法.我决定从看看Play 2.0的iteratee库开始,我已经在build.sbt文件中使用以下几行添加到我的测试项目中. (我使用的是 Scala 2.10)( docs here) resolvers += "Typesafe repository" at "http://repo.typesafe.com/types
我现在正试图围绕调查员和Iteratees的想法.我决定从看看Play 2.0的iteratee库开始,我已经在build.sbt文件中使用以下几行添加到我的测试项目中. (我使用的是
Scala 2.10)(
docs here)
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" libraryDependencies += "play" %% "play-iteratees" % "2.1.1" 我的目标是在文件的字节上创建一个Enumerator,并最终为它添加一些解析逻辑,但是当我尝试看似简单的事情时,我得到一个例外. val instr = getClass.getResourceAsStream(...) val streamBytes = for { chunk <- Enumerator fromStream instr byte <- Enumerator enumerate chunk } yield byte val printer = Iteratee.foreach[Byte](println) streamBytes.apply(printer) 会发生什么(我假设是)文件中的所有字节都被打印出来,然后我得到一个IllegalStateException,说“Promise已经完成”. java.lang.IllegalStateException: Promise already completed. at scala.concurrent.Promise$class.complete(Promise.scala:55) at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:58) at scala.concurrent.Promise$class.failure(Promise.scala:107) at scala.concurrent.impl.Promise$DefaultPromise.failure(Promise.scala:58) at scala.concurrent.Future$$anonfun$flatMap$1.liftedTree3$1(Future.scala:283) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:277) at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:274) at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:29) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) 由于堆栈跟踪没有指向我的代码中的任何地方,这是不熟悉的领域,我不知道出了什么问题.任何人都可以为这个问题提供一些见解或解决方案吗? 解决方法
看看这是否适合你.我的代码也遇到异常,但是当我解开你的for-comp时,事情就有效了.我不是百分百肯定为什么因为我认为for-comp无论如何都不顾这个代码,但我必须遗漏一些东西:
val bytes = Enumerator fromStream instr flatMap (Enumerator enumerate _) val printer = Iteratee.foreach[Byte](b => println(b)) bytes |>> printer (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |