@(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 –