On 9/12/07, Porta <[EMAIL PROTECTED]> wrote:
> gracias....
>
> por si a alguien le interesa, de rebote encontré esto:
> http://whytheluckystiff.net/articles/seeingMetaclassesClearly.html
> parece interesante. bastante cerca también de lo que necesito.
> hasta que llegué a esta linea:
>  def metaclass; class << self; self; end; end
>
> y ahi me perdí. me marean un poco esos punto y coma. y no hablemos de class
> << self;
>

Jejeje, los punto y coma son de vagancia... ademas de que no hay mucho
que explayar... es un empty class.

> eso tiene que ver con con herencia?

digamos:

class MyPowerHash < Hash
end class

Aqui, defino MyPowerHash, que hereda de Hash (posee a hash como
ancestor y por ende posee la misma funcionalidad de metodos).

Ahora bien, hay dos maneras de definir metodos de clase (esos que
pueden se llamados desde la clase en si y no una instancia).

Un metodo de instancia es aquel que requiere MyClass.new para poder llamarlo.

En cambio, uno definido dentro de class << self (o tambien def self.metodo):

class MyClass < Hash
  # esto
  class << self
    def algo
    end
  end

  # es lo mismo que esto
  def self.algo
  end
end

Cuando tenes mas de un metodo de clase, en lugar de escribir todos los
metodos con 'self.' podes usar class << self.

> alguna lectura recomendada sobre el tema?
>

Nada como el libro de Programming Ruby por Pragmatic Programmers.
Sino tambien, the Humble Little Ruby Book.

No tengo los links a mano :-P

-- 
Luis Lavena
Multimedia systems
-
Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a