Ruby è linguaggio completamente orientato agli oggetti. In ruby, tutto è un oggetto & quindi, appartiene ad alcune classi. per esempio 5
appartiene Object class
Ruby è davvero un linguaggio completamente orientato agli oggetti?
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
così, dobbiamo chiamare tutti i metodi anteponendo nome della classe/oggetto come in Object_name#method_name
. Esempio:
5.times{|i| puts i}
ora, rotaie ha questi cosiddetti aiutanti come stylesheet_link_tag
, javascript_include_tag
, form_for
ecc che non seguono questa sintassi Object_name#method_name
, quindi credo che siano le funzioni normali.
quindi la mia domanda è
- Quali sono queste rotaie aiutanti?
- Se funzionano solo & non ereditano da qualsiasi classe. Questo non contraddice l'affermazione fatta dicendo - in ruby,
everything a object & there are no primitives
. Come esempio, le persone citano5.+(6)
dicendo che anche gli operatori sono solo metodi semplici ?
Quando si vede chiamata di metodo senza ricevitore esplicito, allora il ricevitore è 'self'. Come hai concluso esattamente che "tutto è un oggetto" non è vero? –
Ohk, non sapevo se stessi. Immagino di aver sbagliato, grazie! – CuriousMind
Aggiungo a una risposta :) –