這可能是有益的看一個簡單的旋轉扭曲模板生成的Scala代碼(捻是播放模板引擎)稱爲index.scala.html
:
@()
<h1>Hello, world</h1>
默認情況下,播放將編譯這在斯卡拉文件target/scala-2.11/twirl/main/views/html/index.template.scala
,並且,如果你清理了一下,以除去源的映射(這使模板編譯錯誤被翻譯成輸入文件右線),它會是這個樣子:
package views.html
import play.twirl.api._
object index_Scope0 {
import models._
import controllers._
import play.api.i18n._
import views.html._
import play.api.templates.PlayMagic._
import play.api.mvc._
import play.api.data._
class index
extends BaseScalaTemplate[play.twirl.api.HtmlFormat.Appendable, Format[play.twirl.api.HtmlFormat.Appendable]](play.twirl.api.HtmlFormat)
with play.twirl.api.Template0[play.twirl.api.HtmlFormat.Appendable] {
def apply(): play.twirl.api.HtmlFormat.Appendable = {
_display_ {
{
Seq[Any](format.raw(""""""), format.raw("""<h1>hello, world</h1>"""))
}
}
}
def render(): play.twirl.api.HtmlFormat.Appendable = apply()
def f: (() => play.twirl.api.HtmlFormat.Appendable) =() => apply()
def ref: this.type = this
}
}
object index extends index_Scope0.index
重要事情o請注意,views.html.index
是一個對象,其類型爲views.html.index.type
,如果不添加parens,那就是您所指的。該目的,但是,延伸的稱爲views.html.index_Scope0.index
類,其具有apply()
方法,它返回一個Html
對象(或者更確切地說,HtmlFormat.Appendable
,這是去混疊的類型。)
如果「呼叫」 Scala的對象,Scala的平移(或「de-sugars」)在對象上調用apply()
方法(這是案例類構造函數如何在不使用new
的情況下工作的。)因此,如果使用parens,則會得到一個Html
對象,該對象是渲染的Twirl模板的結果。如果你不這樣做,你只需要獲得已編譯的模板對象本身,而Play不知道如何寫入HTTP響應。
你認爲是錯的。請參閱http://docs.scala-lang.org/style/naming-conventions.html#parentheses – Jubobs