Ruby to w pełni zorientowany obiektowo język. W rubinach wszystko jest przedmiotem &, dlatego należy do jakiejś klasy. na przykład 5
należący do Object class
Czy ruby naprawdę są językiem w pełni zorientowanym na obiekt?
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
tak, musimy zadzwonić wszystkich metod poprzedzając nazwę klasy/przedmiot jak w Object_name#method_name
. Przykład:
5.times{|i| puts i}
teraz, szyny ma tak zwanych pomocników jak stylesheet_link_tag
, javascript_include_tag
, form_for
etc, które przestrzegają tej składni Object_name#method_name
, więc sądzę, że są one po prostu normalne funkcje.
więc moje pytanie jest
- Jakie są te szyny pomocników?
- Jeśli po prostu działają &, nie dziedziczą z żadnej klasy. Czy nie jest to sprzeczne z oświadczeniem złożonym w rubryce ,
everything a object & there are no primitives
. Jako przykład, ludzie cytują5.+(6)
twierdząc, że nawet operatorzy są po prostu prostych metod?
Kiedy widzisz wywołania metody bez wyraźnej odbiornika, wówczas odbiornik jest 'self'. Jak dokładnie stwierdziłeś, że "wszystko jest przedmiotem", nie jest prawdą? –
Ohk, nie wiedziałem o "self". Sądzę, że się myliłem, dzięki! – CuriousMind
Uaktualnię to do odpowiedzi :) –