2016-09-27 18 views
9

W Groovy, mam łańcuch wielowierszowy, określony przez ''', w którym potrzebuję użyć interpolacji w celu zastąpienia innych zmiennych.Jak korzystać z interpolacji String w ciągu wielowierszowym Groovy?

Za wszystkie moje wysiłki, nie mogę go uruchomić - zakładam, że muszę uciec przed czymś, czego mi brakuje.

Oto niektóre przykładowy kod:

def cretanFood = "Dakos" 
def mexicanFood = "Tacos" 
def bestRestaurant = ''' 
${mexicanFood} & ${cretanFood} 
''' 
print bestRestaurant 

W tej chwili, to wyjść:

${mexicanFood} & ${cretanFood} 

natomiast chciałbym wyraźnie spodziewać:

Tacos & Dakos 

(Uwaga - Wolałbym nie w celu połączenia łańcuchów)

Odpowiedz

14

W Groovy, pojedyncze cudzysłowy są używane do tworzenia niezmiennych łańcuchów, dokładnie tak jak Java robi z podwójnymi cudzysłowami.

Kiedy używasz podwójnych cudzysłowów w Groovy, wskazujesz w środowisku wykonawczym zamiar utworzenia zmiennego ciągu lub Groovy String (skrót GString). Możesz używać interpolacji zmiennej z zmiennymi łańcuchami lub możesz pozostawić ją jako zwykły zwykły ciąg Java.

To zachowanie rozciąga się na wieloliniowe wersje ciągów; użycie potrójnych pojedynczych cudzysłowów tworzy niezmienny ciąg wielowierszowy, a potrójne cudzysłowy tworzą ciąg Groovy.

18

Zamiast ''' dla GString lub multi-line string użytku """

def cretanFood  = "Dakos" 
def mexicanFood = "Tacos" 
def bestRestaurant = """${mexicanFood} & ${cretanFood}""" 
print bestRestaurant​ 

GString zamkniętego w ''' nie będzie w stanie rozwiązać placeholder - $. Więcej informacji można znaleźć w artykule Groovy Documentation pod nagłówkiem String i Tabela podsumowań ciągów blok.

+0

Hej, dzięki! dlaczego miałbym "" pracować zamiast "?" – gsaslis

+0

@gsaslis to jest bery basic groovy multiline string literal – injecteer

+0

@gsaslis Dodałem powód w odpowiedzi –