Estoy repasando las recetas Moose
y todavía no puedo ver si puedo crear variables privadas y funciones usándolas? ¿Es posible? Si es así, ¿cómo crearlos con Moose?¿Cómo se pueden crear variables y funciones privadas/públicas usando Moose?
6
A
Respuesta
10
Como daxim señala, los métodos privados tienen el prefijo "_". Debido atributos (variables de instancia) generan métodos getters (y si rw también emisores de métodos) fuera de la caja, usted debe hacer esto:
has 'myvariable' => (
is => 'ro',
writer => '_myvariable',
init_arg => undef,
# other options here
);
esta manera se puede establecer este atributo dentro de su clase/instancia y no es ajustable desde afuera. Si acceso de sólo lectura es demasiado, también se puede marcarlo "privado":
has '_myvariable' => (
is => 'ro',
writer => '_set_myvariable'
init_arg => undef,
# other options here
);
10
Prefija un identificador con un _
para marcar la función/variable etc. como privada. Esto está documentado en perlstyle en la sección sobre alcance, aproximadamente en la mitad del documento.
Esto es respetado por los programadores y algunas herramientas (analizadores fuente/documentación), pero no aplicadas por el compilador. Ver perlmodlib#NOTE.
Cuestiones relacionadas
- 1. ¿Cómo puedo crear variables internas (privadas) de objeto Moose (atributos)?
- 2. Por qué las funciones anidadas pueden acceder a variables desde funciones externas, pero no pueden modificarlas
- 3. Solo se pueden pasar variables por referencia
- 4. En jQuery cómo borrar variables y funciones
- 5. Funciones privadas y variables ExtJs4?
- 6. ¿Qué palabras en inglés se pueden crear usando hexadecimal?
- 7. Moose coerción y constructores
- 8. ¿Cómo se crean subtipos en Moose?
- 9. variables globales JavaScript y funciones anónimas autoinvocadas
- 10. ¿Se pueden exportar las funciones genéricas de Ada a C++?
- 11. ¿Cómo crear variables ficticias?
- 12. ¿Cómo se usa Moose para agregar funciones convenientes para los atributos de la matriz?
- 13. funciones abstractas y argumentos variables lista
- 14. Cómo crear funciones personalizadas en SQLite
- 15. ¿Se pueden interpolar variables de ruby dentro de HAML css?
- 16. C# Creando y usando funciones
- 17. ¿Por qué no se pueden compartir las variables miembro?
- 18. únicas variables se pueden pasar por error de referencia
- 19. Errores útiles para Moose y MooseX :: Declare
- 20. Cómo crear variables globales en Erlang
- 21. ¿Se pueden usar variables de entorno en scripts Inno Setup?
- 22. Herencia de PHP, funciones principales usando variables hijo
- 23. ¿Cómo se compara Moose con el sistema OO de Python?
- 24. No se pueden establecer variables en el script bash
- 25. Moose "generador" vs "predeterminado"
- 26. ¿Cómo se pueden hacer Co-rutinas usando C#?
- 27. Las variables de sesión se pueden engañar (inicio de sesión)?
- 28. No se pueden inspeccionar las variables en eclipse
- 29. ¿Cómo se pueden pasar múltiples variables a una función limpiamente en C?
- 30. R: ¿Cómo crear un vector de funciones?
Usted puede echar un vistazo a MooseX :: privacidad si se quiere, que es una extensión para lograr esto. Sin embargo, los métodos privados no son verdaderamente privados, ya que morirán en lugar de ser salteados en el despacho. –
Perl no es Java. – Ether