[Moscow.pm] Динамические возможности Perl :: помощь коллективного разума

Alexander Q qalex на ashmanov.com
Пт Апр 30 08:52:15 PDT 2010


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

-- 
Alexander Q                       mailto:qalex на ashmanov.com


Подробная информация о списке рассылки Moscow-pm