Perché i linguaggi di programmazione generano le firme dei metodi senza tenere conto del tipo di reso?

11

Ho lavorato con molte lingue che non generano una firma del metodo basata sul tipo restituito. Ho anche lavorato con uno (forse alcuni?) Che lo fanno. Quelli che non mi hanno dato problemi in passato (come qui ). Perché i linguaggi di programmazione generano firme di metodi senza riguardo al tipo di ritorno?

Aggiornamento: Mi riferisco specificamente alle lingue compilate in modo statico

    
posta Charles Lambert 23.04.2011 - 05:21
fonte

3 risposte

5

Non si integrerebbe bene con le gerarchie di tipo typecasting e type. Se si dispone di due versioni di un metodo, una delle quali restituisce il tipo A e una che restituisce il tipo B, si verificano problemi quando:

  • A o B sono sottotipi l'uno dell'altro e tu assegni il valore restituito a quello che è il supertipo.
  • A e B hanno un supertipo comune e tu assegni a tale valore di supertipo.

È possibile aggirare questo problema con i cast, ma ciò richiederebbe la digitazione del nome di una delle funzioni. Puoi anche registrare un errore del compilatore quando la chiamata è ambigua, nel qual caso l'utente deve spendere una quantità simile di sforzi.

    
risposta data 23.04.2011 - 05:33
fonte
3

Perché puoi chiamare un metodo e non assegnarne il risultato.

    
risposta data 23.04.2011 - 05:33
fonte
-4

Regola generale: le lingue strongmente tipizzate di solito associano la firma del metodo a un tipo di ritorno. Le lingue debolmente tipizzate non lo sono.
Non conosco C #, ma presumo che il problema potrebbe essere dovuto al modo in cui C # gestisce i generici. Potrebbe essere la creazione di un metodo totalmente diverso per quello generico, nel qual caso sono in realtà due metodi diversi.

    
risposta data 23.04.2011 - 05:45
fonte

Leggi altre domande sui tag