在Groovy中获取其名称的变量值

问题描述

| 我定义了以下变量:
def VAL1 = \'foo\'
def VAL2 = \'bar\'

def s2 = \'hello ${VAL1},please have a ${VAL2}\'
使这种替代工作最简单的方法是什么? 我如何从
s2
构建一个GString并进行评估? (VAL和s2是从数据库加载的,此代码段仅用于说明我的问题。)     

解决方法

        如果可以将变量放入Map中,则可以使用
SimpleTemplateEngine
import groovy.text.SimpleTemplateEngine

def binding = [ VAL1:\'foo\',VAL2:\'bar\' ]

def template = \'hello ${VAL1},please have a ${VAL2}\'

println new SimpleTemplateEngine().createTemplate( template ).make( binding ).toString()
编辑 您可以使用绑定而不是地图,因此在groovyconsole中可以使用以下功能:
// No def.  We want the vars in the script\'s binding
VAL1 = \'foo\'
VAL2 = \'bar\'

def template = \'hello ${VAL1},please have a ${VAL2}\'

// Pass the variables defined in the binding to the Template
new SimpleTemplateEngine().createTemplate( template ).make( binding.variables ).toString()
    ,        以及:
def VAL1 = \'foo\'
def VAL2 = \'bar\'

def s2 = \"hello ${VAL1},please have a ${VAL2}\".toString()
? 注意:请注意双引号