分组后无法打印可观察项目的项目

时间:2015-12-02 10:04:01

标签: reactive-programming rx-scala reactivex

无法理解为什么以下rxscala代码无法按预期运行:

import rx.lang.scala.Observable

object MyTest extends App {

  case class ProjectEvent(projectName: String, description: String)

  val projectEvents: Observable[ProjectEvent] = Observable.just(
    ProjectEvent("aaa", "d1"),
    ProjectEvent("bbb", "d2"),
    ProjectEvent("aaa", "d3")
  )

  lazy val grouped = projectEvents.groupBy(_.projectName).map { case (projectName, eventsOfThisProject) =>
    println("projectName: " + projectName)
    eventsOfThisProject.foreach(x => "######### event in project " + projectName + ": " + x)
    (projectName, eventsOfThisProject)
  }

  grouped.foreach(println)
}

我将projectEvents分组为projectName,并希望打印每个项目的项目。但是当我运行这段代码时,它只打印:

projectName: aaa
(aaa,rx.lang.scala.JavaConversions$$anon$2@49de17f4)
projectName: bbb
(bbb,rx.lang.scala.JavaConversions$$anon$2@52f6438d)

没有######### event in project打印。

我无法理解为什么,我错过了什么?

1 个答案:

答案 0 :(得分:1)

您忘记在此行中使用println

eventsOfThisProject.foreach(x => "######### event in project " + projectName + ": " + x)

foreach中的功能只是将x转换为String,但不会将其打印出来。