我剛開始學習關於Twirl模板作爲Play框架的一部分,我在想如果有人能夠更好地解釋模板中多個參數組的語義。Twirl模板中的多個參數組
我知道一組參數(通常是第一個?)是我自己提供的參數。我還注意到,最後列出了任何隱式參數。
這是第二個參數組,在我的教程的案例中說,我不確定它是如何使用的。
現在我正在計算那個Twirl經歷了部分應用參數的三個階段:User,internal和implicit。儘管如此,我還是可以解決問題的,有人讓我挺身而出!
我剛開始學習關於Twirl模板作爲Play框架的一部分,我在想如果有人能夠更好地解釋模板中多個參數組的語義。Twirl模板中的多個參數組
我知道一組參數(通常是第一個?)是我自己提供的參數。我還注意到,最後列出了任何隱式參數。
這是第二個參數組,在我的教程的案例中說,我不確定它是如何使用的。
現在我正在計算那個Twirl經歷了部分應用參數的三個階段:User,internal和implicit。儘管如此,我還是可以解決問題的,有人讓我挺身而出!
回想一下,一個旋轉模板編譯到一個Scala函數。 Scala函數可以有多個參數組,所以Twirl模板也可以。真的,這只是語法上的糖,可以讓傳遞的參數更加適合匿名函數。例如:
scala> def foo(a:String, b:() => String) = { a + b() }
foo: (a: String, b:() => String)String
scala> foo("hello", {() => " there" })
res2: String = hello there
scala> def foo(a:String)(b:() => String) = { a + b() }
foo: (a: String)(b:() => String)String
scala> foo("hello") {() => " there" }
res3: String = hello there
正如你所看到的,結果是相同的,但在第二種情況下,調用語法是「更好」。
通常隱含被放置在最後一個組中,因爲那樣它們根本不需要被指定。
所以,如果你有其中有一個標題行這樣的一個模板views.html.foo
:
@(title: String)(content: Html)
這只是使它更容易爲你的東西,如調用它:
Ok(views.html.foo("Title") { /* generate some html */ })
你說:
我想通過三個階段部分應用參數:旋轉r,內在的和隱含的。儘管如此,我還是可以解決問題的,有人讓我挺身而出!
是的,你對此感到滿意。 :)參數按組進行評估,但在調用Twirl生成函數之前發生。只要把它看作上面的句法糖。