我是 Groovy/Grails 和 Java 的新手。
我一直在关注 Grails 的 Bootstrap 类中的一些代码示例,并偶然发现了一段代码,如下所示。
class BootStrap {
def init = { servletContext ->
}
def destroy = {}
}
我确实了解 servletContext 是从其他地方阅读的内容,但我无法弄清楚 servletContext 之后的取消引用 like operator -> 是什么?任何帮助表示赞赏。
最佳答案
想想def
喜欢 var
在 Javascript 和 Object
在Java中;这就是设置变量 init
至{ servletContext -> }
(为了清楚起见,把它放在一行上)。
那是一个闭包,你可以将它们与其他表达式区分开来,因为它们是 { }
中的代码块。 block ,具有 3 种 arg 签名形式之一。如果没有定义 args(就像下面的 destroy
闭包),那么实际上有一个名为 it
的 args .就像 i
在传统的 for 循环中 - 您可以使用复杂的名称,但如果没关系,it
和任何一样好。它是由编译器自动生成的,如果你想命名它,你可以没有it
将存在。
如果有一个或多个明确命名的参数,则没有自动 it
,并且您需要在 args block 和代码开头之间有一个分隔符 - 这就是 ->
确实,并且要求所有东西都在一条线上(需要的地方)还是在多条线上,理论上在较小的本地商店
最后,如果真的有零个参数,例如就像一个简单的 getter int getFoo() { ... }
的闭包等价物然后你可以随意命名并添加->
运算符以明确没有参数(甚至 it
):def fooGetter = { -> ... }
关于grails - 在 Grails 中 ServletContext 之后的这个运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435630/