2016-09-27 5 views
9

ग्रोवी में, मेरे पास एक मल्टीलाइन स्ट्रिंग है, जिसे ''' के साथ परिभाषित किया गया है, जिसमें मुझे कुछ अन्य चर बदलने के लिए इंटरपोलेशन का उपयोग करने की आवश्यकता है।मैं ग्रोवी मल्टीलाइन स्ट्रिंग में स्ट्रिंग इंटरपोलेशन का उपयोग कैसे करूं?

मेरे सभी प्रयासों के लिए, मैं इसे काम नहीं कर सकता - मुझे लगता है कि मुझे कुछ बचने की ज़रूरत है, जिसे मैं याद कर रहा हूं।

यहां कुछ नमूना कोड है:

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

फिलहाल, इस आउटपुट:

${mexicanFood} & ${cretanFood} 

जबकि मैं स्पष्ट रूप से उम्मीद होती है:

Tacos & Dakos 

(नोट - मैं पसंद करेंगे नहीं तारों को संयोजित करने के लिए)

उत्तर

14

ग्रोवी में, एकल उद्धरण का उपयोग अपरिवर्तनीय स्ट्रिंग बनाने के लिए किया जाता है, ठीक उसी तरह जैसे जावा डबल कोट्स के साथ करता है।

जब आप ग्रोवी में डबल कोट्स का उपयोग करते हैं तो आप रनटाइम को एक म्यूटेबल स्ट्रिंग या ग्रोवी स्ट्रिंग (संक्षिप्त के लिए जीस्ट्रिंग) बनाने का इरादा इंगित करते हैं। आप परिवर्तनीय स्ट्रिंग्स के साथ परिवर्तनीय इंटरपोलेशन का उपयोग कर सकते हैं, या आप इसे नियमित सादा जावा स्ट्रिंग के रूप में छोड़ सकते हैं।

यह व्यवहार बहु-पंक्ति स्ट्रिंग संस्करणों तक फैला हुआ है; ट्रिपल सिंगल कोट्स का उपयोग एक अपरिवर्तनीय मल्टी-लाइन स्ट्रिंग बनाता है जबकि ट्रिपल डबल कोट्स ग्रोवी स्ट्रिंग बनाता है।

18

इसके बजाय GString या multi-line string उपयोग """

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

GString''' में संलग्न के लिए ''' का उपयोग करने का placeholder - $ को हल करने में सक्षम नहीं होगा। आप Groovy Documentation में स्ट्रिंग और स्ट्रिंग सारांश तालिका ब्लॉक के तहत Groovy Documentation में अधिक जानकारी प्राप्त कर सकते हैं।

+0

अरे, धन्यवाद! क्यों "" "के बजाय काम करेगा? – gsaslis

+0

@gsaslis यह एक बेरी मूल ग्रोवी मल्टीलाइन स्ट्रिंग शाब्दिक – injecteer

+0

@gsaslis है। मैंने जवाब में कारण जोड़ा है। –

संबंधित मुद्दे