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

时间:2011-08-08 19:17:59

标签: grails groovy map closures

标题可能会产生误导。我真正想要的是知道控制器中闭包的名称。但是Groovy中的闭包始终是匿名的,因此闭包本身没有名称。但是闭包被分配给一个变量,我想知道我是否可以获得该变量的名称。也许一个例子会有所帮助。在Grails控制器中想象我有以下内容:

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

在Map调用结果中,有一个名为'method'的元素,我希望将其分配给此闭包的名称(或者将闭包更加精确的变量)。这可能吗?这里的想法是我想概括结果图并想要自动填充一个名为'method'的元素。本能地感觉这应该是可能的,但我没有发现任何类似的用例来说明如何。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:9)

我不认为你可以在一般情况下获得变量的名称。这只是一个参考,关闭可以分配给其中许多。

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

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

请参阅documentation