gpt4 book ai didi

scala - 在 Play 中的模板调用中调用函数作为参数

转载 作者:行者123 更新时间:2023-12-02 03:43:55 25 4
gpt4 key购买 nike

在 Play/Scala 中;我很困惑为什么这不能编译:

   @(tabNames: Seq[String])

@isActive(idx: Int) = {
@if(idx < 1) {
"active"
} else {
""
}
}

<ul class="nav nav-tabs">
@for((tab, idx) <- tabNames.zipWithIndex) {
@views.html.generic.navLi("tab" + idx.toString, tab, isActive(idx))
}
</ul>

错误如下:

found : play.twirl.api.HtmlFormat.Appendable [error] (which expands to) play.twirl.api.Html [error] required: String [error]
@views.html.generic.navLi("tab" + idx.toString, tab, isActive(idx))

它无法识别对模板的调用中对 isActive 的调用,并且我尝试了多种变体,例如@isActive(idx)isActive(@idx) ${isActive(idx)} (建议 here )等。模板生成一个导航栏,传入选项卡名称并检查nav li是否应事件(由类名/JS配置)。

在另一个模板调用中调用函数时,语法似乎必须不同 - 我无法正确理解。

最佳答案

Documentation区分

  • 可重用的代码块
  • 可重用代码块

请注意 @ 用法之间的细微差别

@isActive(idx: Int) = {
@if(...

@isActive(idx: Int) = @{
if(...

可重用的纯代码块可以具有任意返回类型。在您的情况下,要将 String 作为返回类型,您可以编写:

   @isActive(idx: Int) = @{
if(idx < 1) {
"active"
} else {
""
}
}

关于scala - 在 Play 中的模板调用中调用函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47462869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com