Kurso de Raku / Progresinta / Operatoroj / Metaoperatoroj
Kruca, hiper kaj neita
Krom redukto kaj zipado, Raku havas plurajn aliajn meta-operatorojn. Tri el ili meritas mencion ĉi tie.
Kruca — X
La kruca meta-operatoro X parigas ĉiun
elementon de unu listo kun ĉiu elemento de alia — la
kartezia produto:
say <a b> X <1 2>; # ((a 1) (a 2) (b 1) (b 2))Kiel zipado, ĝi povas ĉirkaŭi operatoron por agi sur ĉiun paron.
X~ kunigas ĉiun paron en ĉenon, kaj X*
multobligas:
say <a b> X~ <1 2>; # (a1 a2 b1 b2)
say (1, 2, 3) X* (10, 100); # (10 100 20 200 30 300)Dum zipado marŝas laŭ du listoj paŝe, krucado kombinas ilin en ĉiu ebla maniero.
Hipera — »…«
Hipera meta-operatoro aplikas operatoron al ĉiu
elemento de listo. La operatoro estas ĉirkaŭita per la pintaj
»…« (aŭ la askia >>…<<). Kun du
listoj ĝi funkcias elemento post elemento, kiel zipado; kun ununura
valoro ĉe unu flanko, ĝi etendas tiun valoron tra la tuta listo:
say (1, 2, 3) »+» (10, 20, 30); # (11 22 33)
say (1, 2, 3) »*» 2; # (2 4 6)La du sagoj ne devas montri al la sama direkto, kaj ilia direkto
decidas kio okazas kiam la listoj malsamas en longeco — pinto montranta
al listo permesas, ke tiu listo estu ripetata por egali
la alian. En la askia <</>>
skribo, la kvar kombinoj estas:
>>op<<— nek unu flanko etendiĝas; la listoj devas jam havi saman longon, alie estas eraro;>>op>>— la dekstra listo estas ripetata por egali la maldekstran;<<op<<— la maldekstra listo estas ripetata por egali la dekstran;<<op>>— la pli mallonga listo estas ripetata por egali la pli longan.
say (1, 2, 3, 4) <<+>> (10, 20); # (11 22 13 24) — 10, 20 repeats to 10, 20, 10, 20Ekzistas ankaŭ unuargumenta formo, kiu vokas metodon sur ĉiu
elemento. >>.uc majuskligas ĉiun ĉenon:
say <raku perl>>>.uc; # (RAKU PERL)Hiperaj operacioj ankaŭ signalas, ke la laboro povas esti
farata paralele — vi renkontos la rilatan metodon .hyper
poste, en la sekcio pri samtempa
programado.
Neiga — !
Metante ! antaŭ komparan operatoron vi neas ĝian
rezulton. La konata != (ne-egala) estas ĝuste ĉi tiu
meta-operatoro aplikata al ==, kaj la samo funkcias por
aliaj buleaj operatoroj kiel eq kaj %%:
say 3 != 4; # True
say 'a' !eq 'b'; # True — ne-egalaj kiel ĉenoj
say 5 !%% 2; # True — 5 ne estas dividebla per 2Resume, $a !op $b estas nur pli pura maniero skribi
!($a op $b).
Tio estas intenca. Male al intence minimuma lingvo kiel Esperanto,
kiu celas unu regulan manieron esprimi ĉiun aĵon, Raku volonte donas al
vi plurajn — do la neiga !eq vivas tuj apud la dediĉita
operatoro ne, kaj ambaŭ signifas ĝuste la samon:
say 'a' ne 'b'; # True — la sama testo kiel 'a' !eq 'b'Praktiko
Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.
Kursa navigado
← Zip-metaoperatoroj | Kvizo — Hiper kaj kruca →
💪 Aŭ iru rekte al la ekzercoj de ĉi tiu
sekcio.