我是Groovy / Grails以及Java的全新手。
我一直在关注Grails的Bootstrap类中的一些代码示例,并偶然发现了一段代码,如下所示。
class BootStrap {
def init = { servletContext ->
}
def destroy = {}
}
我确实理解servletContext在其他地方读取的内容,但我无法弄清楚取消引用是什么操作符 - >在servletContext之后?任何帮助赞赏。
答案 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}}