Kurso de Raku / Esencoj / Bazoj de funkcioj / 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'); # 1020La 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 respondoPraktiko
Vin atendas 3 kvizoj pri la enhavo de ĉi tiu temo.
Kursa navigado
← Kvizo — Redontipo | Kvizo 1 — Simplaj multi-funkcioj →
💪 Aŭ iru rekte al la
ekzerco de ĉi tiu sekcio.