Play scala htmlテンプレートでは、次のように指定できます
@(タイトル:文字列)(コンテンツ:HTML)
また
@(タイトル:文字列)(コンテンツ:=> Html)
違いはなんですか?
Play scala htmlテンプレートでは、次のように指定できます
@(タイトル:文字列)(コンテンツ:HTML)
また
@(タイトル:文字列)(コンテンツ:=> Html)
違いはなんですか?
書き込みparameter: => Html
は「名前パラメータ」と呼ばれます。
例:
def x = {
println("executing x")
1 + 2
}
def y(x:Int) = {
println("in method y")
println("value of x: " + x)
}
def z(x: => Int) = {
println("in method z")
println("value of x: " + x)
}
y(x)
//results in:
//executing x
//in method y
//value of x: 3
z(x)
//results in:
//in method z
//executing x
//value of x: 3
名前によるパラメーターは、使用時に実行されます。これに伴う問題は、それらが複数回評価される可能性があることです。
良い例はifステートメントです。次のような方法だったとしましょう。
def if(condition:Boolean, then: => String, else: => String)
メソッドを実行する前に、両方then
を評価するのは無駄です。else
実行される式は1つだけで、条件はまたはのいずれtrue
かfalse
です。それが理由when
でありelse
、「名前による」パラメータとして定義されています。
この概念はScalaコースで説明されています:https ://www.coursera.org/course/progfun