रकु में `s ///` को जोड़ना
मुझे लगता है कि नशेड़ी को राकू में शामिल करने के लिए स्क्रिप्टिंग के लिए एक बड़ा विक्रय बिंदु इस तरह के निर्माण संभव होगा
my $w = "Hello world"; $w
~~ s/Hello/Hola/
~~ s/world/mundo/
;
say $w; # » Hola world
हालाँकि मुझे ऐसा कुछ लिखने में सक्षम नहीं लगता है। जहाँ तक मुझे पता है कि यह करने की .subst
विधि Str
बहुत बदसूरत है, और यह s///
भी या tr///
मूल रूप से sed
उपयोगकर्ताओं के लिए एक प्रवेश द्वार दवा होगी ।
मेरा सवाल यह है कि अगर मुझे कुछ याद आ रहा है, अगर कुछ इसी तरह से दूर से किसी भी तरह से राकु में संभव है। मैं शुरुआती नहीं हूं और मैं इसका पता नहीं लगा सका।
जवाब
आप उपयोग withकर सकते हैं याgiven
with $w {
s/Hello/Hola/;
s/world/mundo/;
}
andthen
$w andthen s/Hello/Hola/ && s/world/mundo/;
या यह बदसूरत निर्माण
$_ := $w;
s/Hello/Hola/;
s/world/mundo/;
अब तक के कुछ बेहतरीन जवाब (टिप्पणियों सहित)।
S///
कई (क्रमिक) प्रतिस्थापन करते समय रकु के गैर-विनाशकारी ऑपरेटर का उपयोग करना अक्सर उपयोगी होता है। रकु आरपीएल में:
> my $w = "Hello world"; Hello world > given $w {S/Hello/Hola/ andthen S/world/mundo/};
Hola mundo
> say $w;
Hello world
एक बार जब आप अपने कोड से खुश हो जाते हैं, तो आप परिणाम को एक नए चर में सौंप सकते हैं:
> my $a = do given $w {S/Hello/Hola/ andthen S/world/mundo/}; Hola mundo > say $a
Hola mundo
इस विचार को थोड़ा आगे बढ़ाते हुए, मैंने निम्नलिखित 'बेबी राकू' अनुवाद स्क्रिप्ट लिखी और इसे सहेजा Bello_Gallico.p6
। यह चलाने के लिए मजेदार है!
my $caesar = "Gallia est omnis divisa in partes tres"; my $trans1 = do given $caesar { S/Gallia/Gaul/ andthen S/est/is/ andthen S/omnis/a_whole/ andthen S/divisa/divided/ andthen S/in/into/ andthen S/partes/parts/ andthen S/tres/three/ }; put $caesar;
put $trans1;
HTH।
https://docs.raku.org/language/regexes#S///_non-destructive_substitution