Cursus Raku / Elementa / Fundamenta functionum / Plus de functionibus

Multi-functiones

Raku implementat multiplicem distributionem secundum functionis signaturam. Permittit creare functiones quae nomen communicant sed diversos generum inputorum habent. Utere multi declaratore pro singulis variantibus functionis.

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

(Bene est omittere sub post multi.)

Si duas variantes eiusdem functionis habes, compilator multiplicem distributionem facit secundum argumenta quae in vocatione functionis videt. Compara sequentes duas vocationes:

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

Prima vocatio functionem cum parametris integris excitat, dum secunda vocatio alteram variantem functionis quae duos chordas exspectat currit.

Literales parametri

Casu interessante pro multi-functionibus est habere variantes quae valores literales ut parametros habent. Considera sequentes duas variantes:

multi sub f(42) {say 'Hoc est responsum'}
multi sub f($x) {say "$x non est responsum"}

Prima varians solum curritur cum functionem cum exacto valore 42 vocas. In aliis casibus, secunda varians adhibetur. Ordo in quo hae functiones definiuntur non refert.

f(10); # 10 non est responsum
f(42); # Hoc est responsum

Exercitatio

Sequuntur 3 quiz de contentis huius argumenti.

Quiz — Redonare typus   |   Quiz 1 — Simple multi-functiones


💪 Vel recta ad exercitationem huius sectionis i.