【问题标题】:In Groovy, is there a way to know the name of a variable holding a closure?在 Groovy 中,有没有办法知道持有闭包的变量的名称?
【发布时间】:2011-10-22 16:13:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: grails groovy map closures


    【解决方案1】:

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

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

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

    documentation

    【讨论】:

      猜你喜欢
      • 2023-03-19
      • 2014-10-03
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2023-04-02
      • 2012-01-18
      • 1970-01-01
      相关资源
      最近更新 更多