首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不应用Twirl模板默认参数值

不应用Twirl模板默认参数值
EN

Stack Overflow用户
提问于 2016-07-24 04:34:38
回答 1查看 822关注 0票数 0

我有一个Play 2.5模板,它从以下声明开始:

代码语言:javascript
复制
@(title: String)(content: Html)(menu:Html = HtmlFormat.empty)(implicit request:Request[AnyContent])

因此,第二个参数被声明为具有默认值。

现在在控制器中,我有了这个动作生成器:

代码语言:javascript
复制
def document(title:String) = Action.async{implicit request =>
    documentService.findByTitle(title).map{
      case Some(d) => Ok(views.html.document(d))
      case None => Ok(main("No document found")(content = Html("There is no such document")))
    }
  }

因此,我没有将menu参数的值传递给模板调用,我希望它能按照默认参数值语义进行编译和工作,但我得到了这个编译错误:

代码语言:javascript
复制
[error] D:\Projects\feed\app\controllers\MainController.scala:28: missing arguments for method apply in class main; 
[error] follow this method with `_' if you want to treat it as a partially applied function 
[error] case None => Ok(main("No document found")(content = Html("There is no such document"))) 
[error]                                          ^ 
[error] one error found 
[error] (compile:compileIncremental) Compilation failed

你能解释一下这里出了什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-24 06:21:21

再加一对括号。

代码语言:javascript
复制
Ok(main("No document found")(content = Html("There is no such document")()))

没有最后一个括号--它只是一个等待另一个参数的函数。你可以检查你调用的函数的类型。我将在我的示例中展示:

代码语言:javascript
复制
def foo(a: Int = 3) = 41

val one = foo //wan't compile
val two: (Int) => Int = foo
val three: Int = foo()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38546186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档