2010-12-14 11 views
11

Objective-C non supporta l'overloading dei metodi.
Perché?
È fattibile ma Apple ha deciso di non implementarlo? o non è fattibile a causa della natura dinamica dell'Obiettivo-C?Perché Objective-C non supporta l'overloading dei metodi?

Ho l'impressione che l'overloading dei metodi possa essere eseguito su linguaggi compilati (Java, C#) e non può essere eseguito su linguaggi interpretati (Ruby, Python).
Tiene un po 'vero?

risposta

26

La distinzione che è rilevante qui non è tra linguaggi compilati e interpretati, ma tra caratteri statici (Java, C#) e tipizzati dinamicamente (Ruby, Python, Objective-C). In un linguaggio tipizzato dinamicamente, le informazioni sul tipo non sono conosciute fino al runtime. In fase di runtime, tutti gli oggetti sono tipizzati staticamente come id in Objective-C.

Inoltre, un'idea di base nelle lingue OO dinamicamente tipizzate è che non ci si deve preoccupare di che tipo è un oggetto purché risponda ai messaggi che si desidera inviare. Quindi il sovraccarico basato sul tipo andrebbe bene di fronte a quello.

+1

ipoteticamente, è possibile avere un linguaggio digitato dinamicamente che supporti l'overloading dei metodi? esiste un linguaggio del genere ora? – Chiron

+1

Ipoteticamente? Sicuro; potrebbe anche essere fatto sopra Objective-C oggi, se tu volessi andarci (e se volessi abbandonare completamente gli standard di codifica esistenti). Non sarebbe nemmeno "così difficile" (per alcuni valori di "hard", comunque). – bbum

+0

Ho paura di Chuck, non ho capito la tua risposta. Puoi spiegare per favore cosa stai cercando di dire. – Nitish

Problemi correlati