Ruby es lenguaje totalmente orientado a objetos. En ruby, todo es un objeto & por lo tanto, pertenece a alguna clase. por ejemplo 5
pertenece a Object class
¿El rubí es realmente un lenguaje completamente orientado a objetos?
1.9.3p194 :001 > 5.class
=> Fixnum
1.9.3p194 :002 > 5.class.superclass
=> Integer
1.9.3p194 :003 > 5.class.superclass.superclass
=> Numeric
1.9.3p194 :005 > 5.class.superclass.superclass.superclass
=> Object
1.9.3p194 :006 > 5.class.superclass.superclass.superclass.superclass
=> BasicObject
1.9.3p194 :007 > 5.class.superclass.superclass.superclass.superclass.superclass
=> nil
lo tanto, tenemos que llamar a todos los métodos anteponiendo nombre de la clase/objeto como en Object_name#method_name
. ejemplo:
5.times{|i| puts i}
ahora, rieles tiene estos llamados ayudantes como stylesheet_link_tag
, javascript_include_tag
, form_for
, etc, que no siguen esta sintaxis Object_name#method_name
, así que supongo que son funciones simplemente normales.
así que mi pregunta es
- ¿Cuáles son estos carriles ayudantes?
- Si solo funcionan & no heredan de cualquier clase. ¿Eso no contradice la afirmación hecha diciendo - en ruby,
everything a object & there are no primitives
. Como ejemplo, las personas citan5.+(6)
diciendo que incluso los operadores son solo métodos simples?
Cuando vea método de invocación explícita sin el receptor, el receptor es 'self'. ¿Cómo exactamente concluiste que "todo es un objeto" no es verdad? –
Oh, no sabía sobre 'self'. ¡Creo que estaba equivocado, gracias! – CuriousMind
Actualizaré esto a una respuesta :) –