Ruby Module

Março 9, 2009 at 7:09 pm | In ruby | Leave a Comment

Um recurso muito interessante e extremamente útil na linguagem Ruby é o Módulo (module). O módulo possui duas funcionalidades: namespace e mixin.

Namespace

O Módulo pode ser utilizado para prover um namespace para os componentes, mantendo-os mais organizados evitando possíveis problemas de sobrescrita. Veja o exemplo abaixo:

ruby_module_1

Devido às características dinâmicas da linguagem, o método verify da classe AccessControl foi sobrescrito e o resultado do código será ‘verify 2′. Esta sobrescrita pode ser intencional ou não.

Para deixar o código mais organizado e prevenir que o componente seja sobrescrito por engano, pode-se utilizar o módulo como namespace:

ruby_module_2

Para referenciar elementos que estão dentro de um módulo, usa-se Modulo::Elemento

ruby_module_3

Desta forma, a sobrescrita por engano já está evitada. O código abaixo irá imprimir:

verify
verify 2

ruby_module_4

Mixin

Mixin é um recurso interessante. Um módulo pode ser incluído em uma classe. Quando isso ocorre, a classe passa a ter os métodos declarados no módulo. Veja o exemplo abaixo:

ruby_module_5

A classe AccessControl não possui o método “testing”. Quando o interpretador do ruby não encontra um método um um objeto, o método method_missing é invocado.

No exemplo, o módulo MethodMissing foi incluído dentro da classe AccessControl. Desta forma, a classe AccessControl passou a ter os métodos definidos no módulo.

O código imprime:
verify 2
The method ‘testing’ doesn’t exist!!!!

—-

O conceito de módulo é sem dúvida um recurso muito interessante e bastante utilizado pelo framework Ruby on Rails.

Sem comentários ainda »

Feed RSS dos comentários deste post URI do TrackBack

Deixe um comentário

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Blog no WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.