如何在使用Play 2 Iteratees时从List [T]获取枚举器[T]

时间:2013-01-30 12:15:20

标签: functional-programming playframework-2.0 enumerator iterate

我对Play 2很新,我正在尝试Iteratees。

Q1。如何从Enumerator[Person]获得List[Person]

Q2。当我尝试将Enumerator(Option[String])传递给Ok.stream时,我在控制台上收到错误说明

  

无法将选项[String]的实例写入HTTP响应。尝试定义可写[Option [String]]

有人能指出我如何为HTTP响应定义自定义类型的可写入方式吗?

感谢。

1 个答案:

答案 0 :(得分:3)

A1。您可以使用Enumerator#enumerate为每个Person

运行Iteratee
val persons: List[Person] = List(person0, person1)  
Enumerator.enumerate(persons) |>>> Iteratee.foreach(println _)

https://github.com/playframework/Play20/blob/2.1.0/framework/src/iteratees/src/test/scala/play/api/libs/iteratee/EnumeratorsSpec.scala#L74-L83

A2。不是定义Writeable[Option[String]],而是从String

中提取Option[String]
Ok.stream(
   Enumerator(Option("kiki"), Option("foo"), Option("bar")).map(_.get) >>> Enumerator.eof
)