każdy obiekt w ruby i singleton (?)

Witam

W wikipedii, przy haśle Ruby jest taka definicja, że każdy obiekt w ruby jest w zasadzie
pseudo-klasą (singleton class) i każdy może nadpisać metody danej klasy.

Jakoś nie rozumiem tego “singleton class”. Przecież singleton class oznacza, że
jest to klasa, która może mieć tylko JEDNĄ instancję. Jak to się ma do obiektów
ruby’ego? Czy obiekty mogą mieć tylko po jednej instancji ?

Dzięki za oświecenie żółtodzioba :slight_smile:

pozdr

Tzn. zasadniczo sie zgadza (polska wikipedia). Co do terminu singleton to jest bledny, a nawet jesli nie do konca to co najmniej wprowadzajacy w blad.

Niescislosc. obiekty nie moga miec instancji - obiekt jest instancja pewnej klasy.

Tradycyjnie klasa jest tylko “recepta” na obiekt. W ruby mozemy, majac stworzony obiekt, modyfikowac jego “recepte” - w “Programming ruby” cecha ta jest okreslona jako Object-Specific Classes. Tak jek w przykladze z wiki - Zauwaz, ze tylko met. greet() obiektu y zostaje nadpisana.

Jak w tym przypadku moglbym zrozumiec sformuowanie singleton? - kazda instancja klasy (obiekt) jest dostarczana ze swoja klasa (prototypem-recepta), kt. mozemy modyfikowac - wowczas faktycznie mozemy mowic o singletonie dla tej pary.

No tak, ale w takim razie należałoby uznać, że w każdym języku obiektowym - para klasa ↔ obiekt jest
singletonem (bo obiekt “jest dostarczany” ze swoją klasą od której może np. dziedziczyć).

pozdrawiam.

Nie do konca.
tu obiekt ma wlasny egzemplarz klasy i modyfikujac ja nie modyfikujesz zachowania innych obiektow tej samej klasy (dokladniej prototypu tej klasy).
W Rubym wszystko jest obiektem, rowniez klasa.

To jest najtrafniejsza odpowiedz (http://onestepback.org/articles/10things/9everythingisanobject1.html).

Widze, ze ta cecha rubyego jest bardziej znana pod nazwa “Singleton Methods”.
http://onestepback.org/articles/10things/page025.html
http://www.rubyist.net/~slagell/ruby/singletonmethods.html

“A method given only to A SINGLE OBJECT is called a singleton method.”