如何在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]