Получить значение переменной для ее имени в Groovy - PullRequest
1 голос
/ 15 июня 2011

У меня определены следующие переменные:

def VAL1 = 'foo'
def VAL2 = 'bar'

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

Какой самый простой способ заставить эту замену работать? Как я могу построить GString из s2 и оценить его? (VAL и s2 загружаются из базы данных, этот фрагмент предназначен только для демонстрации моей проблемы.)

Ответы [ 2 ]

6 голосов
/ 15 июня 2011

Вы можете использовать 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()

edit

Вы можете использовать привязкувместо карты, поэтому в 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()
1 голос
/ 15 июня 2011

а как же:

def VAL1 = 'foo'
def VAL2 = 'bar'

def s2 = "hello ${VAL1}, please have a ${VAL2}".toString()

Примечание: обратите внимание на двойные кавычки

...