如何在Groovy多行字符串中使用字符串插值?

gsa*_*lis 30 groovy string-interpolation

在Groovy中,我有一个定义的多行字符串,'''其中我需要使用插值来替换其他一些变量.

尽管我付出了很多努力,但我无法让它发挥作用 - 我认为我需要逃避一些我缺失的东西.

这是一些示例代码:

def cretanFood = "Dakos" 
def mexicanFood = "Tacos"
def bestRestaurant = ''' 
${mexicanFood} & ${cretanFood}
'''
print bestRestaurant
Run Code Online (Sandbox Code Playgroud)

目前,这输出:

${mexicanFood} & ${cretanFood}
Run Code Online (Sandbox Code Playgroud)

虽然我很清楚地期望:

Tacos & Dakos 
Run Code Online (Sandbox Code Playgroud)

(注意 - 我不想连接字符串)

Abh*_*ute 43

而不是'''用于GStringmulti-line string使用"""

def cretanFood     = "Dakos"  
def mexicanFood    = "Tacos"
def bestRestaurant = """${mexicanFood} & ${cretanFood}"""
print bestRestaurant?
Run Code Online (Sandbox Code Playgroud)

GString封闭在'''将无法解决placeholder - $.您可以在标题字符串字符串汇总表块下的Groovy文档中找到更多详细信息.


aal*_*ray 40

在Groovy中,单引号用于创建不可变的字符串,就像Java使用双引号一样.

当您在Groovy中使用双引号时,您向运行时指示您打算创建可变String或Groovy String(简称GString).您可以对可变字符串使用变量插值,也可以将其保留为常规纯Java字符串.

此行为扩展到多行String版本; 三重单引号的使用创建一个不可变的多行字符串,而三重双引号创建一个Groovy字符串.