Saltar al contenido

¿Se pueden sobrecargar los operadores en Smalltalk?

Siéntete en la libertad de compartir nuestro espacio y códigos en tus redes sociales, ayúdanos a aumentar nuestra comunidad.

Solución:

La sobrecarga de métodos no es posible en Smalltalk. En su lugar, se utiliza una combinación de anulación de métodos y una técnica denominada envío doble para implementar el mismo comportamiento que la sobrecarga de operadores en otros lenguajes.

Puede encontrar un ejemplo de implementación en los operadores matemáticos +,*,/,- (que son mensajes binarios en Smalltalk). Aquí está la idea: la implementación de Integer>>+ envía un mensaje #addWithInteger: a su argumento. La implementación de #addWithInteger: se implementa en cada subclase de Magnitud, como para especializar la adición de Int+Int, Float+Int, etc…

En su mayor parte, las cosas que son operadores en otros idiomas están en mensajes binarios o unarios de Smalltalk como +, *, /, … etc. Las clases son libres de responder a esos mensajes como les parezca, así que sí, puedes redefinir el comportamiento. de +, y también puede hacer que las instancias de algunas clases no numéricas lo entiendan y respondan.

Por ejemplo, mire la implementación de + en la clase Point.

Una cosa a tener en cuenta, := y ^ no son mensajes, por lo que no se pueden redefinir de la forma descrita anteriormente.

Por cierto, para aprender Smalltalk, uno de los mayores recursos de ejemplos y código es la imagen de Smalltalk. Así que le recomiendo que encienda Smalltalk y aprenda a navegar a través de la gran cantidad de ejemplos que contiene.

No hay operadores en Smalltalk, excepto asignación. Todo se implementa en clases como métodos. Entonces, si desea cambiar el comportamiento de los métodos = o + / -, solo mire a sus implementadores. O si desea crear instancias de su clase para comprender esos mensajes, simplemente impleméntelos.

Si te ha sido provechoso nuestro post, agradeceríamos que lo compartas con el resto juniors y nos ayudes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *