Специализация индивидуален обект

Аз съм солипсист и, честно казано, изненадан, че повечето от нас не са.

От писмото, получено Бъртранд Ръсел

В повечето обектно-ориентирани езици, всички обекти от същия клас имат същото поведение. Клас - е шаблон, който генерира обекти със същия интерфейс на всеки конструктор повикване.

Ruby функционира по същия начин, но това не е краят на историята. След получаване на даден обект, можете да промените поведението си в движение. В действителност, като свържете с обекта на частния, анонимно подклас, всички методи на подклас на оригинала все още са достъпни, но има и поведението, което е уникално за обекта. Тъй като това поведение е присъщо за даден обект, той се среща само веднъж. Нещо, което се случва само веднъж, наречен потник (Сингълтън). Така че, ние имаме методи потник потник и класове.

Думата "S" може да бъде източник на объркване, защото той се използва в различен смисъл - като името на един добре познат дизайн модел, който описва клас, за които може да съществува само един обект. Ако се интересувате от това използване, контакт singleton.rb библиотека.

В следващия пример, виждаме два обекта, както линията. За второто, ние добавяме upcase метод, който заменя съществуващ метод със същото име.

Def b.upcase # Създаване метод потник.

поставя a.upcase # HELLO

поставя b.upcase # сбогом

Добавянето метод за потник на обекта потник генерира клас за обекта, ако тя все още не е установена по-рано. Потник клас родител е класа на оригиналния обект. (Можем да предположим, че анонимен подклас на оригиналния клас.) Ако искате да добавите към обекта няколко метода, които можете да създадете потник клас изрично:

Def upcase # Създаване метод потник.