Corso di Raku / Fondamenti / Più sulle funzioni
Multi-funzioni
Raku implementa multiple dispatch basato sulla firma della funzione. Permette di creare funzioni che condividono lo stesso nome ma hanno tipi di dati di input differenti. Usa il dichiaratore multi
per ciascuna delle varianti della funzione.
multi sub add(Int $x, Int $y) { $x + $y }
multi sub add(Str $x, Str $y) { $x ~ $y }
(È possibile omettere sub
dopo multi
.)
Se hai due varianti della stessa funzione, il compilatore esegue il multiple dispatch a seconda degli argomenti che vede nella chiamata della funzione. Confronta le seguenti due chiamate:
say add(10, 20); # 30
say add('10', '20'); # 1020
La prima chiamata attiva la funzione con parametri interi, mentre la seconda chiamata esegue la seconda variante della funzione che si aspetta due stringhe.
Parametri letterali
Un caso interessante per le multi-funzioni è avere varianti che hanno valori letterali come parametri. Considera le seguenti due varianti:
multi sub f(42) {say 'Questa è la risposta'}
multi sub f($x) {say "$x non è la risposta"}
La prima variante viene eseguita solo quando chiami la funzione con il valore esatto di 42. Negli altri casi, viene utilizzata la seconda variante. L’ordine in cui queste funzioni sono definite non importa.
f(10); # 10 non è la risposta
f(42); # Questa è la risposta
Pratica
Completa i quiz che coprono i contenuti di questo argomento.
Navigazione del corso
← Più sulle funzioni / Tipo di ritorno | 💪 Esercizio: Fattoriale con multi-funzioni →
Questa pagina è tradotta automaticamente con ChatGPT 4o. Testo originale in inglese.
Traduzioni di questa pagina: English • Deutsch • Español • Italiano • Latviešu • Nederlands • Български • Русский • Українська