@(css: Option[String])(content: Html)(customJS: Option[Array[String]])
@for(js <- customJS if !customJS.isEmpty) {
<script src="@routes.Assets.at(js)"></script>
}
我正在写这个小的理解,将通过并打印出uri字符串。由于它可能不是,或者是一串字符串,所以我使用了Option
。斯卡拉奇怪的情况播放类型推断
然后来自类型安全激活器的编译器告诉我,@routes.Assets.at()
应该采取String
而不是Array[String]
。我很震惊,因为js应该是String
对不对?
然后我试着写这样的:
@for(js <- customJS if !customJS.isEmpty) {
@var uri = js
<script src="@routes.Assets.at(js)"></script>
}
然后编译说,加入行是“简单表达”的非法启动。
这不是一个简单的表达!这是一个完整的理解{}
!另外我最终被迫使用js.asInstanceOf[String]
来欺骗编译器。我对此并不满意,因为一旦有人告诉我不应该使用asInstanceOf
。那么我的原始代码有什么问题?
我看到了!这就是为什么!!但那个“简单表达”的非法开始呢? –
@WindDweller:我猜'@ var'只是非法的陈述。我无法在[documentation]中找到它(http://www.playframework.com/documentation/2.2.x/ScalaTemplates)。你可以使用'@definition'。你也可以在'for'中添加一个额外的变量:'@for(jsArray < - customJS; js < - jsArray; otherName = js)'。 – senia
Emmm ..对不起,我试图使用'Seq',但它告诉我:错误:值foreach不是对象的成员Seq –