Kurso de Raku / Esencoj / Pli pri funkcioj

Multi-funkcioj

Raku efektivigas multoblan sendon bazitan sur funkcia subskribo. Ĝi permesas krei funkciojn kiuj dividas la nomon sed havas malsamajn tipojn de eniraj datumoj. Uzu la multi deklarilon por ĉiu el la variantoj de la funkcio.

multi sub add(Int $x, Int $y) { $x + $y }
multi sub add(Str $x, Str $y) { $x ~ $y }

(Estas bone preterlasi sub post multi.)

Se vi havas la du variantojn de la sama funkcio, la kompililo plenumas multoblan sendon depende de kiuj argumentoj estas viditaj en la funkcia voko. Komparu la jenajn du vokojn:

say add(10, 20); # 30
say add('10', '20'); # 1020

La unua voko ekigas la funkcion kun entjeraj parametroj, dum la dua voko funkciigas la duan varianton de la funkcio kiu atendas du ĉenojn.

Literalaj parametroj

Interesa kazo por multi-funkcioj estas havi variantojn kiuj havas literalajn valorojn kiel parametroj. Konsideru la jenajn du variantojn:

multi sub f(42) {say 'Ĉi tio estas la respondo'}
multi sub f($x) {say "$x ne estas la respondo"}

La unua varianto estas nur funkciigita kiam vi vokas la funkcion kun la ĝusta valoro de 42. En aliaj kazoj, la dua varianto estas uzata. La ordo en kiu ĉi tiuj funkcioj estas difinitaj ne gravas.

f(10); # 10 ne estas la respondo
f(42); # Ĉi tio estas la respondo

Kurso navigado

Pli pri funkcioj / Redontipo   |   💪 Ekzerco: Faktorialo kun multi-funkcioj

Ĉi tiu paĝo estas aŭtomate tradukita per ChatGPT 4o. Originala angla teksto

Tradukoj de ĉi tiu paĝo: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська