当我尝试创建标签时,我遵循 play2.0 文档中的“Common template use cases”。
@(level: String = "error")(body: (String) => Html)
@level match {
case "success" => {
<p class="success">
@body("green")
</p>
}
case "warning" => {
<p class="warning">
@body("orange")
</p>
}
case "error" => {
<p class="error">
@body("red")
</p>
}
}
然后刷新页面http://localhost:9000 ,得到一个错误说:
')' expected but '=' found.
In foo/app/views/tags/notice.scala.html at line 4.
1#{extends 'main.html' /}
2#{set title:'notice.scala.html' /}
3
4@(level: String="error")(body: (String) => Html)
5
6@level match {
7
8 case "success" => {
因为我是 play2.0 和 scala 的新手,有人告诉我为什么吗?
最佳答案
在它自己的参数组中有一个默认参数真的没有意义:
@(level: String = "error")(body: (String) => Html)
请注意 Scala templates common use cases 中的示例“moreScripts and moreStyles”将默认参数与另一个参数放在一起:
@(title: String, scripts: Html = Html(""))(content: Html)
你也可以这样做:
@(body: (String) => Html, level: String = "error")
旁注:依靠字符串来区分成功/警告/错误并不是一个好主意。字符串很脆弱并且容易出现拼写错误,这会以恼人的方式隐藏错误。相反,寻找一种数据类型或创建您自己的数据类型来表示这一点:这样拼写错误就会成为编译器错误。
class ResultType
case object Success extends ResultType
case class Warning(message: String) extends ResultType
case class Error(message: String) extends ResultType
关于Java,Play2.0 ,')' 预期但 '=' 找到 Play ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9807102/