scala枚举以获取长度

scala枚举以获取长度,scala,playframework,playframework-2.0,scala-2.10,scala-2.8,Scala,Playframework,Playframework 2.0,Scala 2.10,Scala 2.8,我有一个Enumerate.map[Array[Byte]]和scala class AccessLog extends EssentialFilter { def apply(next: EssentialAction) = new EssentialAction { lazy val processor: RequestStatsProcessor = RequestStatsProcessor.getInstance def apply(rh: RequestHeade

我有一个Enumerate.map[Array[Byte]]和scala

class AccessLog extends EssentialFilter {
  def apply(next: EssentialAction) = new EssentialAction {
    lazy val processor: RequestStatsProcessor = RequestStatsProcessor.getInstance
    def apply(rh: RequestHeader) = {
      val start = System.currentTimeMillis
      def writeableEnumeratee[A](writeable: Writeable[A]): Enumeratee[A, Array[Byte]] = Enumeratee.map(a => writeable.transform(a))
      var size: Long = 0;
      def logTime(response: PlainResult): Result = response match {
        case simple @ SimpleResult(header, body) => {
          val time = System.currentTimeMillis - start

          val en = Enumeratee.map[Array[Byte]] { item =>
            size = size + item.length
            var requestInfo: RequestInfo = new RequestInfo(start, rh, response, size)
            processor.setRequest(requestInfo)
            processor.process
            item
          }
          SimpleResult(header, body &> writeableEnumeratee(simple.writeable) &> en)
        }
        case _ => response
      }
      next(rh).map {
        case plain: PlainResult => logTime(plain)
        case async: AsyncResult => async.transform(logTime)
      }
    }
  }
}
如果我这样写,我会得到数组的每个长度[字节],但不是映射中的总大小


如何获得总长度?

我对您的代码有一个问题。。。什么是
尺寸
a
?它们来自哪里?它们的目的是什么?我之所以这样问,是因为它们似乎不知从何而来,因为它们不在您的声明范围内map@Electric咖啡嗨,我更新我的问题。请你再看看更新后的帖子好吗?我还是找不到
a
在哪里declared@Electric咖啡我把a项改成了a项,这样你会发现它更简单。请帮忙,这个问题会从最小化中受益匪浅,很难说出你在问什么。