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