如何在Groovy中插入字符串?

如何在Groovy中插入字符串?,groovy,Groovy,我有多个列表类型的变量。我有另一个列表类型变量,它将所有变量的名称作为值保存 def A = ['abc','def','ghi'] def B = ['123','456','789'] def C = ['ABC','DEF','GHI'] def masterList = ['A','B','C'] masterList.each { println "${${it}}" } 我希望输出为 “abc”、“def”、“ghi” ‘123’、‘456’、‘789’ “ABC”

我有多个列表类型的变量。我有另一个列表类型变量,它将所有变量的名称作为值保存

def A = ['abc','def','ghi']
def B = ['123','456','789']
def C = ['ABC','DEF','GHI']

def masterList = ['A','B','C']

masterList.each {

    println "${${it}}"

}
我希望输出为

“abc”、“def”、“ghi”

‘123’、‘456’、‘789’


“ABC”、“DEF”、“GHI”

如果这些变量是局部范围的,则不能动态引用它们

解决方案1:在列表中使用地图:

def map = ['A': ['abc','def','ghi'],
           'B': ['123','456','789']
           'C': ['ABC','DEF','GHI']]
然后

masterList.each {println map[it]}
解决方案2:创建当前类的
A
B
C
实例变量(如果尚未创建),然后可以使用括号表示法动态读取这些属性:

masterList.each {println this[it]}

如果这些变量是局部范围的,则不能动态引用它们

解决方案1:在列表中使用地图:

def map = ['A': ['abc','def','ghi'],
           'B': ['123','456','789']
           'C': ['ABC','DEF','GHI']]
然后

masterList.each {println map[it]}
解决方案2:创建当前类的
A
B
C
实例变量(如果尚未创建),然后可以使用括号表示法动态读取这些属性:

masterList.each {println this[it]}

如果它在
类中

class Foo {
    def A = ['abc','def','ghi']
    def B = ['123','456','789']
    def C = ['ABC','DEF','GHI']
}

Foo foo = new Foo()
def masterList = ['A','B','C']
masterList.each {
    println foo[it]
}

如果它在
类中

class Foo {
    def A = ['abc','def','ghi']
    def B = ['123','456','789']
    def C = ['ABC','DEF','GHI']
}

Foo foo = new Foo()
def masterList = ['A','B','C']
masterList.each {
    println foo[it]
}

如果是脚本,那么这将起作用:

A = ['abc','def','ghi']
B = ['123','456','789']
C = ['ABC','DEF','GHI']

def masterList = ['A','B','C']

masterList.each {
    println this."$it"
}

请注意,
A,B,C
前面没有
def
,如果它是脚本,那么这将起作用:

A = ['abc','def','ghi']
B = ['123','456','789']
C = ['ABC','DEF','GHI']

def masterList = ['A','B','C']

masterList.each {
    println this."$it"
}

请注意,在
A、B、C
前面没有
def
,尽管这取决于您的使用情况,但以下操作很好。。。只要变量是类级变量

class MyClass {
  def A = ['abc','def','ghi']
  def B = ['123','456','789']
  def C = ['ABC','DEF','GHI']

  def test(String role, String group) {
    def masterList = ['A','B','C']
    masterList.each { it ->
      println(" ${it} = ${this[it]}")
    }
  }
}
结果:

A = [abc, def, ghi]
B = [123, 456, 789]
C = [ABC, DEF, GHI]

虽然这将取决于您的用例,但下面的工作很好。。。只要变量是类级变量

class MyClass {
  def A = ['abc','def','ghi']
  def B = ['123','456','789']
  def C = ['ABC','DEF','GHI']

  def test(String role, String group) {
    def masterList = ['A','B','C']
    masterList.each { it ->
      println(" ${it} = ${this[it]}")
    }
  }
}
结果:

A = [abc, def, ghi]
B = [123, 456, 789]
C = [ABC, DEF, GHI]