Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre otro uso importante de las tablas debiles como es la asociacion de atributos con objetos pero hay interminables situaciones donde necesitamos adjuntar algun atributo a un objeto:

  • nombres a funciones
  • valores predeterminados a tablas
  • tamaños para arrays
  • etc…
Anuncios

Cuando el objeto es una tabla podemos almacenar el atributo en la misma tabla con una clave unica y apropiada, tal como vimos antes una manera simple y a prueba de errores es crear un nuevo objeto (habitualmente una tabla) y usarlo como la clave, sin embargo si el objeto no es una tabla este no puede mantener su propio atributo, incluso para tablas algunas veces no vamos a querer almacenar el atributo en el objeto original.

Anuncios

Por ejemplo, podemos necesitar mantener el atributo de forma privada o no queremos el atributo para que moleste una tabla transversal, para todos estos casos una manera alternativa para asociar atributos a objetos, una manera ideal para realizar esta tarea puede ser por medio de una tabla externa, no es casualidad que a las tablas se las llame arrays asociativos, usamos los objetos como claves y los atributos como valores, una tabla externa puede mantener el atributo de cualquier tipo de objeto asi como Lua nos permite usar cualquier tipo de como clave, ademas los atributos contenidos en una tabla externa no interfieren con otros objetos y pueden ser privados como la tabla misma.

Anuncios

Sin embargo esta aparentemente perfecta solucion tiene un gran inconveniente, una vez que usamos un objeto como una clave en una tabla bloqueamos al objeto como existente, esto produce que Lua no pueda coleccionar un objeto que esta siendo usado como clave, si usamos una tabla comun para asociar funciones a sus nombres ninguna de estas funciones sera alguna vez coleccionadas, como estaras pensando para evitar este inconveniente se puede usar las tablas debiles, para este caso en particular usaremos las claves debiles porque el uso de las mismas no previene que cualquiera de las claves sea colectada, una vez que no haya mas referencias a ella, por el otro lado la tabla no puede tener valores debiles porque los atributos de los objetos activos pueden ser colectados.

Anuncios

En resumen, hoy hemos visto otra aplicacion practica de las tablas debiles, en este caso para almacenar atributos de objetos, como podemos hacerlo, sus distintas formas y cual seria la forma mas practica, 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.00