JavaFree.org | RubyOnBr.org

Declaração de classe em módulo

Acompanhar Declaração de classe em módulo 3 posts, 2 participantes

Avatar Fernando Luizao 330 posts

Pessoal, alguém sabe qual a diferença entre fazer


class X::Y
end

e

module X
class Y
end
end

Tem diferença ou é só questão de organização do código?

 
Avatar Mereghost 835 posts

Luizão:

O segundo modo, AFAIK, é o Ruby Way de fazer a coisa.
A primeira notação só serve se você tiver definido o módulo antes.

O Rails, devido as magias negras do carregamento de módulos, usa a primeira notação quando você tem um arquivo dentro de um diretório.

irb(main):001:0> class Teste::Teste2
irb(main):002:1> end
NameError: uninitialized constant Teste
        from (irb):1
irb(main):003:0> module Teste
irb(main):004:1> class Teste2
irb(main):005:2> end
irb(main):006:1> end
=> nil
irb(main):007:0> class Teste::Teste3
irb(main):008:1> end
=> nil
 
Avatar Fernando Luizao 330 posts

Hum, agora clareou as coisas. Valeu a explicação Mereghost =).