在 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
。我们知道只有一个表达式会被执行,条件是true
or false
。这就是原因when
,并被else
定义为“按名称”参数。
这个概念在 Scala 课程中进行了解释:https ://www.coursera.org/course/progfun