在Grails中的ServletContext之后这个运算符是什么?

时间:2014-10-18 02:06:28

标签: grails

我是Groovy / Grails以及Java的全新手。

我一直在关注Grails的Bootstrap类中的一些代码示例,并偶然发现了一段代码,如下所示。

class BootStrap { 
 def init = { servletContext -> 

 } 

 def destroy = {} 
} 

我确实理解servletContext在其他地方读取的内容,但我无法弄清楚取消引用是什么操作符 - >在servletContext之后?任何帮助赞赏。

1 个答案:

答案 0 :(得分:2)

在Javascript中考虑def类似var,在Java中考虑Object;这样就可以将变量init设置为{ servletContext -> }(为了清晰起见,将其放在一行上)。

这是一个Closure,您可以从其他表达式中告诉他们,因为他们在{ }块内的代码块,具有3种形式的arg签名之一。如果没有定义args(比如下面的destroy闭包)那么实际上有一个名为it的arg。这与传统for循环中的i类似 - 您可以使用精心设计的名称,但如果不重要,it就像任何一样好。它是由编译器自动生成的,如果你想命名它,你就可以,并且不存在it

如果有一个或多个明确命名的args,那么就没有自动it,你需要在args块和代码的开头之间有一个分隔符 - 那是什么{ {1}}确实需要一行(需要哪里)或多行,理论上是在较小的本地商店

最后,如果确实存在零参数,例如就像闭包相当于一个简单的getter ->然后你可以根据需要命名它并添加int getFoo() { ... }运算符以明确没有args(甚至不是->):{{ 1}}