我想为现有变量赋值,但变量的名称是动态的。我该怎么做
def a1 = 0;
def b = 1;
eval("a${b} =1;");
print a1
这里不需要javascript:
def name = 'someName';
def value = 'someValue';
new GroovyShell(this.binding).evaluate("${name} = '${value}'")
assert someName == value;
虽然这并不能完全回答您的问题,但解决此问题的一种简单方法是将动态变量作为映射键删除...... 避免需要评估它们
def b = 1
def map = [:]
map."a${b}" = 1
assert map."a${b}" == 1
println(map) // result is [a1:1]