[Madrid-pm] Una pregunta tonta

DervishD bugs en dervishd.net
Mie Abr 18 04:22:55 PDT 2007


    Hola a todos :)

    Perdón por la autorespuesta...

 * DervishD <bugs en dervishd.net> dixit:
>     Por otro lado, tengo una pregunta tonta: ¿cómo hago para que un
> método sea "interno" (privado) a un package? Sé cómo hacerlo en C pero
> en Perl no tengo ni idea, y he visto de todo, desde lo de los paquetes
> "Heavy" hasta "::private", pero ninguna de esas soluciones impide que el
> llamante acabe usando "Class::private->metodo_que_no_deberia_usar".

    Se me ocurre implementar los objetos como closures y dentro del
closure comprobar que la subrutina está siendo llamada desde su propio
package, pero entonces se plantean los siguientes problemas:

    - Las clases derivadas no pueden usar el closure (bueno sí, si el
closure usa "isa" para comprobar el package del llamante, o algo así).

    - Esto en realidad sólo sirve para métodos que accedan a los datos
del objeto. Para métodos generales habría que hacer un closure dentro
del closure que es el objeto o algo así de complicado.

    - ¿Y el GC? La verdad es que nunca se me había ocurrido todo esto y
no sé cómo destruir el closure. ¿Serviría algo tan simple como asignar
"undef" al escalar que contiene la referéncia del closure?

    En fin, que esta vez es definitivo, dejo el LSD porque noto que no
me hace ningún bien XDDD

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
It's my PC and I'll cry if I want to... RAmen!


Más información sobre la lista de distribución Madrid-pm