raku에서`s ///`연결
Nov 30 2020
스크립팅 중독자들이 raku에 가입 할 수있는 엄청난 판매 포인트는 이러한 구성이 가능하다는 것입니다.
my $w = "Hello world"; $w
~~ s/Hello/Hola/
~~ s/world/mundo/
;
say $w; # » Hola world
그러나 나는 이와 같은 것을 쓸 수없는 것 같다. 내가 아는 한 .subst
방법으로 이것을하는 Str
것은 너무 추악 할 것이며,이 체인 s///
또는 심지어 tr///
기본적으로 sed
사용자 등을 위한 관문 약물이 될 것입니다 .
내 질문은 내가 뭔가를 놓치고 있는지, 이것과 원격으로 비슷한 것이 어떻게 든 raku에서 가능하다면입니다. 나는 초보자가 아니고 그것을 이해할 수 없었습니다.
답변
24 wamba Nov 30 2020 at 07:45
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/;
6 jubilatious1 Nov 30 2020 at 23:41
지금까지 몇 가지 훌륭한 답변 (댓글 포함).
Raku의 비파괴 S///
연산자를 사용하면 여러 번 (연속적인) 대체를 수행 할 때 종종 유용합니다. Raku REPL에서 :
> 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
이 아이디어를 조금 더 나아가서 다음의 'baby Raku'번역 스크립트를 작성하여 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