Как получить перечислитель [T] из списка [T] при использовании Play 2 Iteratees

Я совсем новичок в Play 2 и пытаюсь использовать Iteratees.

Q1. Как я могу получить Enumerator[Person] от List[Person]?

Q2. Когда я пытаюсь передать Enumerator(Option[String]) в Ok.stream Я получаю сообщение об ошибке на консоли

Невозможно записать экземпляр Option[String] в ответ HTTP. Попробуйте определить Writeable[Option[String]]

Может кто-нибудь указать мне правильное направление относительно того, как я могу определить Writeable для пользовательских типов в ответ HTTP?

Благодарю.

1 ответ

Решение

A1. Ты можешь использовать Enumerator#enumerate запустить Iteratee для каждого Person

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

A2. Вместо определения Writeable[Option[String]]извлекать String от Option[String]

Ok.stream(
   Enumerator(Option("kiki"), Option("foo"), Option("bar")).map(_.get) >>> Enumerator.eof
)
Другие вопросы по тегам