Clase :: Meta :: Express

Clase :: Meta :: Express es un módulo PERL para la creación concisa y expresiva de clase :: Meta Classes.
Descargar ahora

Clase :: Meta :: Express Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • Perl Artistic License
  • Precio:
  • FREE
  • Nombre del editor:
  • David Wheeler
  • Sitio web del editor:
  • http://search.cpan.org/~dwheeler/

Clase :: Meta :: Express Etiquetas


Clase :: Meta :: Express Descripción

Clase :: Meta :: Express es un módulo PERL para la creación concisa y expresiva de clase :: Meta Classes. Clase :: Meta :: Express es un módulo PERL para la creación concisa y expresiva de clase :: Meta Classes.Synopsis Paquete My :: Contacto; Clase de uso :: Meta :: Express; clase {meta contact => (default_type => 'string'); tiene 'nombre'; tiene contacto => (requerido => 1); } Este módulo proporciona una interfaz para crear de manera concisa, pero expresamente crea clases con clase :: Meta. Aunque, por supuesto, me gusta la clase :: Meta, nunca he estado demasiado emocionado con su interfaz para crear clases: paquete My :: Thingy; Usa la clase :: meta; Comience {# Crear una clase :: Objeto meta para esta clase. My $ cm = clase :: meta-> nuevo (clave => 'thingy'); # Añadir un constructor. $ cm-> Add_Conconstructor (nombre => 'nuevo'); # Agregar un par de atributos con accesorios generados. $ cm-> add_attribute (nombre => 'id', is => 'entero', requerido => 1,); $ cm-> add_attribute (nombre => 'nombre', is => 'string', requerido => 1,); $ cm-> add_attribute (nombre => 'edad', is => 'entero',); # Añadir un método personalizado. $ cm-> add_method (nombre => 'chk_pass', código => Sub {devuelto 'código'},); $ cm-> construir; } Este ejemplo es relativamente simple; Puede conseguir mucho más verboso. Pero aún así, todas las llamadas del método eran molestas. Quiero decir, ¿a quienquiera que piense en usar una interfaz orientada a objetos para declarar una clase? (Oh, sí: lo hice.) No estaba solo en querer una interfaz más declarativa; Curtis Poe, con mi bendición, creó clase :: Meta :: Declare, que usaría esta sintaxis para crear la misma clase: paquete My :: Thingy; Use Class :: Meta :: Declare ': TODO'; Clase :: Meta :: Declare-> Nuevo (# Crear una clase :: Objeto meta para esta clase. Meta => , # Añadir un constructor. Constructores => , # Agregue un par de atributos con accesorios generados. Atributos => , # Añadir un método personalizado. Métodos => ); Este enfoque tiene la ventaja de ser la ventaja de ser un poco más conciso, y es declarativo, pero encuentro todos los niveles de sangría molestos; Es difícil para mí averiguar dónde estoy, especialmente si tengo que definir muchos atributos. Y, finalmente, todo es una cadena con esta sintaxis, excepto a aquellos feos escalares de solo lectura, como $ Type_Integer. Así que no puedo decir fácilmente dónde termina un atributo y el siguiente comienza. Bleh. Requisitos: · Perl


Clase :: Meta :: Express Software relacionado