More Related Content Similar to Ruby mri metaclases_y_busqueda_de_metodos Similar to Ruby mri metaclases_y_busqueda_de_metodos (20) Ruby mri metaclases_y_busqueda_de_metodos1. Ruby Análisis del MRI
Meta-clases y búsqueda de
métodos
Fernando Trasviña @azendal
Project Manager Freshout
3. Ideas Básicas
Orientado a objetos (Todo debe ser un objeto)
Basado en Clases (incluso las clases deben ser objetos)
Dinámico (Cambia un objeto, cambia todos)
Herencia simple (porque la herencia múltiple es del diablo )
Composición (bueno tal vez no sea tan mala después de
todo)
7. Estructura interna de objetos
struct RBasic {
unsigned long flags;
VALUE klass;
};
struct RObject {
struct RBasic basic;
struct st_table *iv_tbl;
};
8. Estructura interna de clases
struct RClass {
struct RBasic basic;
struct st_table *iv_tbl;
struct st_table *m_tbl;
VALUE super;
};
9. Modulos y Clases muy similares
las clases son modulos que se pueden instanciar
las clases pueden tener superclases
10. Definición de métodos de instancia
class Human
def hi
'hi'
end
end
class Student < Human
def hi
'wasaaa'
end
end
11. Definición de métodos de clase
def Human.walk
'hi there'
end
class << Human
def run
'no way'
end
def rest
'oki doki'
end
end
14. Donde se buscan los métodos
> Object.ancestors
=> [Object, Kernel]
> Class.ancestors
=> [Class, Module, Object, Kernel]
> String.ancestors
=> [String, Enumerable, Comparable, Object,
Kernel]
> Array.ancestors
=> [Array, Enumerable, Object, Kernel]
class << Array; puts ancestors; end
Class
Module
Object
Kernel
=> nil