Bienvenidos sean a este post, un particular caso de lo visto en el post anterior para la programacion orientada a objetos ocurre cuando un objeto tiene un metodo unico, para tales casos no tenemos necesidad de crear una tabla de interfaz, en su lugar podemos devolver este metodo unico como la representacion del objeto.
Si esto te suena un poco descabellado recordemos que en este post vimos como construir funciones iteradoras que mantienen el estado como cierres, es decir que un iterador que mantiene su estado no es nada mas ni nada menos que un objeto de metodo unico, otro caso interesante de objetos de metodo unico ocurre cuando este metodo unico es realmente un metodo de despacho que ejecuta diferentes tareas basado en un argumento distinguido, veamos el siguiente codigo para una posible implementacion de tal objeto:
function nuevoObjeto(valor)
return function(accion, v)
if accion == "get" then return valor
elseif accion == "set" then valor = v
else error("Accion invalida")
end
end
end
Ejecutemos el codigo anterior para ver su salida:
> d = nuevoObjeto(0)
> print(d("get"))
0
> d("set",10)
> print(d("get"))
10
> print(d("tinchicus"))
stdin:5: Accion invalida
Esta implementacion no convencional para objetos es muy efectiva, analicemos la sintaxis:
d("set",10)
Aunque sea peculiar es solo dos caracteres mas larga que la mas convencional:
d.set(10)
Cada objeto usa un cierre unico el cual es mas practico que una tabla, no tenemos herencia pero si una privacidad completa, la unica forma de acceder al estado del objeto es atraves de su metodo solitario.
Tcl/Tk usa un enfoque similar para sus widgets, el nombre de un widget en Tk denota una funcion (un comando widget) que puede ejecutar todo tipos de operaciones sobre el widget.
En resumen, hoy hemos visto un enfoque particular, como son las condiciones para hacerlo, cuando debe ser aplicado, cuales son sus beneficios, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50