Classe :: Meta :: Express

Classe :: Meta :: Express é um módulo Perl para criação concisa e expressiva de classe :: Meta aulas.
Baixe Agora

Classe :: Meta :: Express Classificação e resumo

Propaganda

  • Rating:
  • Licença:
  • Perl Artistic License
  • Preço:
  • FREE
  • Nome do editor:
  • David Wheeler
  • Site do editor:
  • http://search.cpan.org/~dwheeler/

Classe :: Meta :: Express Tag


Classe :: Meta :: Express Descrição

Classe :: Meta :: Express é um módulo Perl para a criação concisa e expressiva das classes de classe :: Meta. Classe :: Meta :: Express é um módulo Perl para a criação concisa e expressiva de classe :: Meta Classes.Synopsis Pacote My :: Contato; Use Classe :: Meta :: Express; Classe {Meta Contact => (Default_Type => 'string'); tem 'nome'; tem contato => (obrigatório => 1); } Este módulo fornece uma interface para criar de forma concisamente aulas com classes :: Meta. Embora eu seja obviamente gostado de aula :: Meta, nunca fui tão feliz com sua interface para criar classes: pacote my :: thingy; Use Classe :: Meta; Comece {# Crie um objeto Classe :: Meta para esta aula. Minha $ cm = Class :: Meta-> Novo (Key => 'Thingy'); # Adicione um construtor. $ cm-> add_constructor (nome => 'novo'); # Adicione um par de atributos com acessadores gerados. $ cm-> add_attribute (nome => 'id', é => 'integer', obrigatório => 1,); $ cm-> add_attribute (nome => 'nome', é => 'string', obrigatório => 1,); $ cm-> add_attribute (nome => 'envelhecimento', é => 'inteiro',); # Adicione um método personalizado. $ cm-> add_method (nome => 'chk_pass', code => sub {return 'code'},); $ cm-> construir; } Este exemplo é relativamente simples; Pode ficar muito mais verboso. Mas mesmo ainda, todos os chama de métodos eram irritantes. Quero dizer, quem pensou em usar uma interface orientada a objetos para declarar uma aula? (Oh yeah: Eu fiz.) Eu não estava sozinho em querer uma interface mais declarativa; Curtis Poe, com minha bênção, classe criada :: Meta :: Declare, que usaria essa sintaxe para criar a mesma classe: pacote :: thingy; Use Classe :: Meta :: Declare ': Tudo'; Classe :: Meta :: Declare-> Novo (# Crie um objeto Classe :: Meta para esta classe. Meta => ,] Adicionar um construtor => , # Adicione um par de atributos com acessadores gerados. Atributos => , # Adicione um método personalizado. Métodos => ); esta abordagem tem a vantagem de ser um pouco mais conciso, e é declarativo, mas acho todos os níveis de indentação irritantes; É difícil para mim descobrir onde estou, especialmente se tiver que definir muitos atributos. E finalmente, tudo é uma string com esta sintaxe, exceto para aqueles escalares somente somente de leitura, como $ type_integer. Então não posso dizer facilmente onde um atributo termina e o próximo começa. Bleh. Requisitos: · Perl.


Classe :: Meta :: Express Software Relacionado