【问题标题】:Is it possible to discover variables in scope without knowing their names?是否可以在不知道其名称的情况下发现范围内的变量?
【发布时间】:2014-05-20 22:37:10
【问题描述】:

我得到了一个基于 Java 和 Groovy 的大型系统。当 groovy 脚本执行时,Java 会在范围内放置一些有用的变量以供 Groovy 与之交互。麻烦的是我不知道这些变量是什么,甚至他们的名字。有没有一种方法可以通过编写 Groovy 来检查它自己的范围并输出它找到的变量的名称?

一旦我有了一个变量名,我就可以对它使用反射来找出我需要的任何其他东西。

【问题讨论】:

    标签: reflection groovy scope


    【解决方案1】:

    所以看来binding.getVariables()有魔力

    我找到了一个函数,它的返回值变成了我可以看到的东西并使用了这个:

    def r = [:]
    binding.getVariables().entrySet().each {
        r[it.key] = it.value.getClass().getName()
    }
    

    它返回我正在寻找的所有变量及其类型的映射。

    【讨论】:

      【解决方案2】:

      这对你有用吗:

      def env = System.getenv()
      //Print all the environment variables.
      env.each{
           println it
      } 
      

      【讨论】:

      • 好声音。似乎“环境”是我在我的问题中使用的错误词。我认为“范围”是一个更好的选择。
      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多