次の変数を定義しています。
def VAL1 = 'foo'
def VAL2 = 'bar'
def s2 = 'hello ${VAL1}, please have a ${VAL2}'
この置換を機能させる最も簡単な方法は何ですか?どうすればGStringを構築しs2
て評価することができますか?(VALとs2はデータベースからロードされます。このスニペットは、私の問題を示すためだけのものです。)
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()
?
注:二重引用符に注意してください