2010-12-14 15 views
11

Objective-C no es compatible con la sobrecarga de métodos.
¿Por qué?
¿Es factible pero Apple decidió no implementarlo? o no es posible debido a la naturaleza dinámica de Objective-C?¿Por qué Objective-C no es compatible con la sobrecarga de métodos?

Tengo la impresión de que la sobrecarga de métodos se puede hacer en lenguajes compilados (Java, C#) y no se puede hacer en lenguajes interpretados (Ruby, Python).
¿Tiene alguna verdad?

Respuesta

26

La distinción que es relevante aquí no es entre lenguajes compilados e interpretados, sino entre estáticamente tipados (Java, C#) y tipeados dinámicamente (Ruby, Python, Objective-C). En un lenguaje de tipado dinámico, la información del tipo a menudo se desconoce hasta el tiempo de ejecución. En tiempo de ejecución, todos los objetos se escriben estáticamente como id en Objective-C.

Además, una idea central en los lenguajes OO de tipo dinámico es que no debe importar qué tipo es un objeto, siempre y cuando responda a los mensajes que desea enviar. Así que la sobrecarga según el tipo iría directo a eso.

+1

hipotéticamente, ¿es posible tener un lenguaje de tipado dinámico que admita la sobrecarga de métodos? ¿existe tal lenguaje ahora? – Chiron

+1

¿Hipotéticamente? Por supuesto; incluso podría hacerse encima de Objective-C hoy, si quisiera ir allí (y si quisiera apartarse por completo de los estándares de codificación existentes). Realmente ni siquiera sería "tan difícil" (para algunos valores de "difícil", de todos modos). – bbum

+0

Me temo Chuck, no entendí tu respuesta. ¿Puedes explicar lo que estás tratando de decir? – Nitish

Cuestiones relacionadas