La mia lingua principale è tipizzata staticamente (Java). In Java, devi restituire un singolo tipo da ogni metodo. Ad esempio, non puoi avere un metodo che restituisca condizionalmente un String
o che restituisca condizionalmente un Integer
. Ma in JavaScript, ad esempio, questo è molto possibile.
In un linguaggio tipizzato staticamente capisco perché questa è una cattiva idea. Se ogni metodo restituisce Object
(il genitore comune da cui ereditano tutte le classi) allora tu e il compilatore non hai idea di cosa hai a che fare. Dovrai scoprire tutti i tuoi errori in fase di esecuzione.
Ma in un linguaggio tipizzato dinamicamente, potrebbe non esserci nemmeno un compilatore. In un linguaggio tipizzato dinamicamente, non è ovvio per me perché una funzione che restituisce più tipi è una cattiva idea. Il mio background in linguaggi statici mi evita di scrivere tali funzioni, ma temo di essere preoccupato per una funzionalità che potrebbe rendere il mio codice più pulito in modi che non riesco a vedere.
Modifica : rimuoverò il mio esempio (finché non riesco a pensarne uno migliore). Penso che stia indirizzando le persone a rispondere a un punto che non sto cercando di fare.