我想map
在 Play 2.0 模板中执行两个顺序操作。我试过这样:
@defining(for(a <- as) yield { doSmthWith(a); doSmthWith2(a) })
{ aaas => aaas.map(_.toString).mkString("|") } /*CRASH*/
我认为它相当于普通的 Scala:
val aaas = for(a <- as) yield { doSmthWith(a); doSmthWith2(a) }
println(aaas.map(_.toString).mkString("|"))
但它在第{
一句话就崩溃了expected start of definition
......
就像我for
用常规地图替换循环一样:
@(as.map(a => { doSmthWith(a); doSmthWith2(a) })).map(_.toString).mkString("|"))
在第一个}
标志上同样崩溃。如何在 Play 模板中实现顺序映射?
更新:
堆栈 - 在这里!- 直接从控制台:
sbt.PlayExceptions$CompilationException: Compilation error [expected start of de
finition]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$
11$$anonfun$apply$12.apply(PlayReloader.scala:224) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$
11$$anonfun$apply$12.apply(PlayReloader.scala:224) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$
11.apply(PlayReloader.scala:224) ~[na:na]
at sbt.PlayReloader$$anon$2$$anonfun$reload$3$$anonfun$2$$anonfun$apply$
11.apply(PlayReloader.scala:221) ~[na:na]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
堆栈说的是,Option
但我在这里的任何地方都没有使用它们。一定是一些内部运作。