Grails 在Groovy中,有没有办法知道包含闭包的变量的名称?

Grails 在Groovy中,有没有办法知道包含闭包的变量的名称?,grails,groovy,map,closures,Grails,Groovy,Map,Closures,标题可能具有误导性。我真正想知道的是控制器中闭包的名称。但Groovy中的闭包总是匿名的,所以闭包本身并没有名字。但是闭包被分配给了一个变量,我想知道是否可以得到这个变量的名称。也许举个例子会有所帮助。在Grails控制器中,假设我有以下内容: def get_data = { Map results = [ 'errorCode' = -1, 'method' : 'get_data' ] ... render results as JSON }

标题可能具有误导性。我真正想知道的是控制器中闭包的名称。但Groovy中的闭包总是匿名的,所以闭包本身并没有名字。但是闭包被分配给了一个变量,我想知道是否可以得到这个变量的名称。也许举个例子会有所帮助。在Grails控制器中,假设我有以下内容:

  def get_data = {
      Map results = [ 'errorCode' = -1, 'method' : 'get_data' ]
      ...
      render results as JSON
  }

在名为results的映射中,有一个名为“method”的元素,我想将它指定给这个闭包的名称(或者更精确地说,指定闭包的变量)。这可能吗?这里的想法是我想概括结果映射,并想自动填充一个名为“method”的元素。本能地感觉这应该是可能的,但我还没有发现任何类似的用例来说明如何实现。非常感谢您的帮助。

我认为在一般情况下,您无法获得变量的名称。这只是一个引用,可以将闭包分配给其中的许多对象

但是,在控制器代码中获取当前操作的名称非常简单:

def get_data = {    
  def results = ['method': actionName]
}