rjc*_*rjc 4 scala playframework
我需要能够声明变量,稍后我需要引用它们.为了实现这一点,这是我的scala模板的简化版本:
@(map1:
java.util.LinkedHashMap[String,java.util.LinkedHashMap[String,Object]])
@import scala.collection.JavaConversions._
@import play.Logger
@for( (key,value) <- map1) {
<div>
@{
val rmap = Foo.someMethod(value)
val baz = rmap.getOrElse("baz", null)
<table border="0" cellpadding="0" cellspacing="0" >
<tbody>
<tr>
<td rowspan="3">
<div class="bar">
@baz
</div>
</td>
</tr>
</tbody>
</table>
}
</div>
}
Run Code Online (Sandbox Code Playgroud)
是否高于有效的scala模板,如果不是,我如何声明baz并在标记中稍后引用它?我使用的是1.2.2RC2和scala 0.9.1
我很好奇所以做了一些挖掘.请参阅https://groups.google.com/forum/#!topic/play-framework/Mo8hl5I0tBQ - 目前暂无办法,但展示了一个有趣的解决方法.定义utils/Let.scala:
package utils
Object Let {
def let[A,B](a:A)(f:A=>B):B = f(a)
}
Run Code Online (Sandbox Code Playgroud)
然后
@import utils.Let._
@let(2+3){ answer =>
@answer <hr> @answer
}
Run Code Online (Sandbox Code Playgroud)
这是一种非常实用的处理方式,但是,你对Scala的期望是什么:)