我正在用java播放2.0大約一個月,並且有一件事情我真的無法理解。模板是如何工作的?向他們傳遞params的最佳方式是什麼?在模板參數中播放2.0括號
什麼
@(name: String, value: String)
和
@(name: String)(value: String)
這只是爲了方便區別?
我發現this這個問題揭開了保密的面紗,但它並不能告訴我應該選擇哪種方式。
我正在用java播放2.0大約一個月,並且有一件事情我真的無法理解。模板是如何工作的?向他們傳遞params的最佳方式是什麼?在模板參數中播放2.0括號
什麼
@(name: String, value: String)
和
@(name: String)(value: String)
這只是爲了方便區別?
我發現this這個問題揭開了保密的面紗,但它並不能告訴我應該選擇哪種方式。
典型的例子將是:
// main.scala.html
@(title: String)(content: Html)
....
// index.scala.html
@main("Foo Title") {
<div>this content Html param passed in as a block {}</div>
}
與:@(title: String, content: Html)
語法是不是很好:
@main("Foo Title", {
<div>...</div>
})
在第一種情況下,您將多個參數傳遞給函數。在第二種情況下,你正在使用咖喱。根據Wikipedia:
在數學和計算機科學,鑽營是以這樣的方式變換函數可以接受多個參數(或參數的n元組)的技術,它可以被稱爲鏈每個函數都有一個參數(部分應用程序)。 http://en.wikipedia.org/wiki/Currying
什麼是最好的不同的用例。
編輯:請注意,模板只是Scala函數。
O,謝謝。今天我頭腦功能編程太多:) –
還有一個問題:僅用於HTML的括號? –
@AlexPovar在這種情況下,好吧,是的,方法參數是Html類型;-)你可以將它應用到任何地方,而不僅僅是模板層,它是Scala語言本身的一部分;如果你有def foo(a:Int)(b:Unit)= b,你可以稱它爲foo(1){println(「bar」)} – virtualeyes