2

在 Play scala html 模板中,可以指定

@(标题:字符串)(内容:Html)

或者

@(标题:字符串)(内容:=> Html)

有什么区别?

4

1 回答 1

5

写作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。我们知道只有一个表达式会被执行,条件是trueor false。这就是原因when,并被else定义为“按名称”参数。

这个概念在 Scala 课程中进行了解释:https ://www.coursera.org/course/progfun

于 2013-02-08T07:56:40.677 回答