以字符串形式按名称访问变量值(Groovy) [英] Access variable value by its name as String (groovy)
本文介绍了以字符串形式按名称访问变量值(Groovy)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我做了一些研究,但还没有找到适用于我的情况的有效代码。我有两个名为test
和test2
的变量,我想以[test:valueof(test), test2:valueof(test2)]
我的代码如下:
def test="HELLO"
def test2="WORLD"
def queryText = "$$test$$ $$test2$$ this is my test"
def list = queryText.findAll(/$$(.*?)$$/)
def map = [:]
list.each{
it = it.replace("$$", "")
map.putAt(it, it)
}
queryText = queryText.replaceAll(/$$(.*?)$$/) { k -> map[k[1]] ?: k[0] }
System.out.println(map)
System.out.println(queryText)
输出:
所需输出:
"HELLO WORLD this is my test"
我想我需要map.putAt(it, eval(it))
编辑
这是我获取输入的方式。代码进入'test'
脚本
右侧是脚本内部的变量名,左列是值(稍后将是动态的)
推荐答案
您马上就到了。
解决方案不是将值放入单独的变量中,而是将它们放入脚本绑定中。
在开头添加这个(删除变量test
和test2
):
def test="HELLO"
def test2="WORLD"
binding.setProperty('test', test)
binding.setProperty('test2', test2)
并更改此设置:
{ k -> map[k[1]] ?: k[0] }
至此:
{ k -> evaluate(k[1]) }
这篇关于以字符串形式按名称访问变量值(Groovy)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文