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

标签 grails groovy map closures

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

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

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

最佳答案

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

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

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

documentation .

关于grails - 在 Groovy 中,有没有办法知道包含闭包的变量的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987372/

相关文章:

hibernate - 按多对多关系查询时从结果列表中排除项目

hibernate - hibernate 操作异常

java - 如何访问默认包中的java类?

java - Java中嵌入groovy,groovy.lang.MissingPropertyException : No such property:

java - 我可以在 HashMap 中通过 Key 实现类型安全吗?

Grails:如何将整个模型从一个 Controller 转发到另一个 Controller ?

hibernate - 限制 Hibernate 查询中的输出数量

scala - 线程安全地变换可变映射中的值

c++ - 如何在迭代时从 map 中删除?

sql - Grails joinTable查询问题