On 30.04.2010 19:46, Akzhan Abdulin wrote:
> Это не то понятие синглтона, которым мы обычно оперируем.
> 
> Речь о класс-синглтоне, являющимся специализацией класса для одного
> конкретного объекта.
> 
> http://ola-bini.blogspot.com/2006/09/ruby-singleton-class.html

Специализацию сделать нетрудно. Например, так:

package MyClass;
...
has methods => (
        is => 'rw',
        isa => 'HashRef',
        default => sub {{}},
);
...

my $a = MyClass->new();
$a->methods->{method} = sub { ... };
$a->methods->{method}->();


Можно сделать более красиво, через AUTOLOAD. Ежели метода нету, а
элемент хэша из coderefs есть, то автолоад возвращает понятно что.

> 30 апреля 2010 г. 19:43 пользователь Andrei
> <[email protected] <mailto:[email protected]>>
> написал:
> 
> 
> 
>     30 апреля 2010 г. 17:31 пользователь Akzhan Abdulin
>     <[email protected] <mailto:[email protected]>> написал:
> 
>         Кстати, вспомнил про объекты-синглтоны. Это объекты, которые
>         обладают уникальными свойствами и методами, отсутствующими у
>         других объектов того же класса.
> 
>         Они вполне часто используются в Ruby, но я не знаю аналога в
>         Perl. В Perl пакет - это класс, и методы принадлежат пакету, а
>         не объекту.
> 
> 
>     Class::Singleton?
> 
> 
>     -- 
>     Andrei Protasovitski
>     < andrei[dot]protasovitski[at]gmail[dot]com >
>     Diemen, Netherlands
> 
>     --
>     Moscow.pm mailing list
>     [email protected] <mailto:[email protected]> | http://moscow.pm.org
> 
> 
> 
> 
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org

-- 
Alexander Q                       mailto:[email protected]
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить