मैं एक कठिन समय लगा रहा हूँ कि कैसे स्ट्रिंग वाक्यविन्यास जंग में काम करता है। विशेष रूप से, मैं यह पता लगाने की कोशिश कर रहा हूं कि मल्टीपल लाइन स्ट्रिंग कैसे बनाई जाए।
मैं एक कठिन समय लगा रहा हूँ कि कैसे स्ट्रिंग वाक्यविन्यास जंग में काम करता है। विशेष रूप से, मैं यह पता लगाने की कोशिश कर रहा हूं कि मल्टीपल लाइन स्ट्रिंग कैसे बनाई जाए।
जवाबों:
सभी स्ट्रिंग शाब्दिक को कई लाइनों में तोड़ा जा सकता है; उदाहरण के लिए:
let string = "line one
line two";
एक दो लाइन स्ट्रिंग है, के रूप में एक ही "line one\nline two"
(निश्चित रूप से एक \n
newline बच भी सीधे उपयोग कर सकते हैं )। यदि आप स्वरूपण कारणों से कई लाइनों में एक स्ट्रिंग को तोड़ना चाहते हैं तो आप नई लाइन और प्रमुख व्हाट्सएप से बच सकते हैं \
; उदाहरण के लिए:
let string = "one line \
written over \
several";
के रूप में ही है "one line written over several"
।
यदि आप स्ट्रिंग में लाइनब्रीक चाहते हैं तो आप उन्हें निम्नलिखित में जोड़ सकते हैं \
:
let string = "multiple\n\
lines\n\
with\n\
indentation";
यह वैसा ही है "multiple\nlines\nwith\nindentation";
concat!()
दिए गए विकल्पों को पूरा करने के लिए मैक्रो जोड़ना चाहूंगा ( doc.rust-lang.org/std/macro.concat.html )
यदि आप कुछ लंबा करना चाहते हैं, जिसमें उद्धरण, बैकस्लैश आदि शामिल हो सकते हैं, तो कच्चे स्ट्रिंग शाब्दिक अंकन का उपयोग करें :
let shader = r#"
#version 330
in vec4 v_color;
out vec4 color;
void main() {
color = v_color;
};
"#;
यदि आपके स्ट्रिंग के भीतर दोहरे उद्धरण चिह्नों और हैश प्रतीकों के अनुक्रम हैं, तो आप एक परिसीमन के रूप में हैश की एक मनमानी संख्या को निरूपित कर सकते हैं:
let crazy_raw_string = r###"
My fingers #"
can#"#t stop "#"" hitting
hash##"#
"###;
हॉन का उत्तर सही है लेकिन अगर इंडेंटेशन आपको परेशान करता है, तो इंडोक का उपयोग करने पर विचार करें जो इंडेंटेड मल्टी-लाइन स्ट्रिंग्स के लिए एक प्रक्रियात्मक मैक्रो है। यह "इंडेंटेड डॉक्यूमेंट" के लिए है। यह एक मैक्रो प्रदान करता है जिसे indoc!()
मल्टीलाइन स्ट्रिंग शाब्दिक लगता है और इसे इंडेंट करता है इसलिए सबसे बाईं ओर का गैर-स्पेस कैरेक्टर पहले कॉलम में है।
let s = indoc! {"
line one
line two
"};
परिणाम है "line one\nline two\n"
।
व्हॉट्सएप को दस्तावेज़ में सबसे बाईं ओर के गैर-अंतरिक्ष चरित्र के सापेक्ष संरक्षित किया गया है, इसलिए निम्न में से एक लाइन के सापेक्ष दो इंडेंटेड 3 रिक्त स्थान हैं:
let s = indoc! {"
line one
line two
"};
परिणाम है "line one\n line two\n"
।
यदि आप अपने कोड में बहुस्तरीय पाठ को इंडेंट करना चाहते हैं:
let s = "first line\n\
second line\n\
third line";
println!("Multiline text goes next:\n{}", s);
परिणाम निम्नलिखित होगा:
Multiline text goes next:
first line
second line
third line
\n
हैं [...] आप नई लाइन और प्रमुख व्हाट्सएप से बच सकते हैं{backslash}
। (यह एक टिप्पणी में कोड में एक बैकस्लैश टाइप करने के लिए बहुत मुश्किल है, ऐसा प्रतीत होता है।)