LINUX.ORG.RU

История изменений

Исправление gh0stwizard, (текущая версия) :

И еще насчет ваших отговорок о том, что где-то что-то работает, а у меня вот не работает. В самом начале вы что говорите ?AnyEvent позволяет задействовать различные библиотеки и выступать в роли надкласса для: EV, Event, POE, PP и т.п. Таким образом, AnyEvent по сути выступает в роли субкласса (в контексте ООП) для тех или иных реализаций.

Соответственно, человек знающий, как работает наследование классов в перле, от ваших отговорок и явных утверждений раздвинет глаза, чтобы еще раз перечитать что вы написали. Код ниже работает только потому, что происходит поиск метода data() таким же образом как делает перл при поиске методов из родительского класса:

package EV;

sub new {
  bless [], shift;
}

sub data {
  die "ales gut";
}

package AnyEvent;
use parent -norequire qw(EV);

package main;

my $obj = new AnyEvent;

$obj->data();

vs.

use EV; # our "parent class"
use AnyEvent;

my $t = AE::timer 1, 1, sub {
  my ($w) = @_; # our parent is EV::timer here !
  $w->data();
};

Понятно, что если будут использовать POE, Event, то поведение аналогичных watchers из этих модулей AnyEvent полностью наследует.

Но что вы пишите, еще раз:

Одна из интересных особенностей интерфейса AnyEvent — это необходимость использования замыканий, поскольку нет другой возможности передать параметры в колбэк-функцию.

Правильно было написать. В ситуации когда используется реализация событий на чистом перле (и другие, <список>) нельзя передать параметры, необходимо использовать замыкании. В ситуации когда используется EV, <и тут проверенный список модулей> это возможно, так как описано в документации к EV, через метод data.

Исправление gh0stwizard, :

И еще насчет ваших отговорок о том, что где-то что-то работает, а у меня вот не работает. В самом начале вы что говорите ?AnyEvent позволяет задействовать различные библиотеки и выступать в роли надкласса для: EV, Event, POE, PP и т.п. Таким образом, AnyEvent по сути выступает в роли субкласса (в контексте ООП) для тех или иных реализаций.

Соответственно, человек знающий, как работает наследование классов в перле, от ваших отговорок и явных утверждений раздвинет глаза, чтобы еще раз перечитать что вы написали. Код ниже работает только потому, что происходит поиск метода data() таким же образом как делает перл при поиске методов из родительского класса:

package EV;

sub new {
  bless [], shift;
}

sub data {
  die "ales gut";
}

package AnyEvent;
use parent -norequire qw(EV);

package main;

my $obj = new AnyEvent;

$obj->data();

vs.

use EV; # our "parent class"
use AnyEvent;

my $t = AE::timer 1, 1, sub {
  my ($w) = @_; # our parent is EV::timer here !
  $w->data();
};

Понятно, что если будут использовать POE, Event, то поведение аналогичных watchers из этих модулей AnyEvent полностью наследует.

Но что вы пишите, еще раз:

Одна из интересных особенностей интерфейса AnyEvent — это необходимость использования замыканий, поскольку нет другой возможности передать параметры в колбэк-функцию.

Исправление gh0stwizard, :

И еще насчет ваших отговорок о том, что где-то что-то работает, а у меня вот не работает. В самом начале вы что говорите ?AnyEvent позволяет задействовать различные библиотеки и выступать в роли надкласса для: EV, Event, POE, PP и т.п. Таким образом, AnyEvent по сути выступает в роли субкласса (в контексте ООП) для тех или иных реализаций.

Соответственно, человек знающий, как работает наследование классов в перле, от ваших отговорок и явных утверждений раздвинет глаза, чтобы еще раз перечитать что вы написали. Код ниже работает только потому, что происходит поиск метода data() таким же образом как делает перл при поиске методов из родительского класса:

package EV;

sub new {
  bless [], shift;
}

sub data {
  die "ales gut";
}

package AnyEvent;
use parent -norequire qw(EV);

package main;

my $obj = new AnyEvent;

$obj->data();

vs.

use EV; # our "parent class"
use AnyEvent;

my $t = AE::timer 1, 1, sub {
  my ($w) = @_; # our subclass is EV::timer here !
  $w->data();
};

Понятно, что если будут использовать POE, Event, то поведение аналогичных watchers из этих модулей AnyEvent полностью наследует.

Но что вы пишите, еще раз:

Одна из интересных особенностей интерфейса AnyEvent — это необходимость использования замыканий, поскольку нет другой возможности передать параметры в колбэк-функцию.

Исходная версия gh0stwizard, :

И еще насчет ваших отговорок о том, что где-то что-то работает, а у меня вот не работает. В самом начале вы что говорите ?AnyEvent позволяет задействовать различные библиотеки и выступать в роли надкласса для: EV, Event, POE, PP и т.п. Таким образом, AnyEvent по сути выступает в роли субкласса (в контексте ООП) для тех или иных реализаций.

Соответственно, человек знающий, как работает наследование классов в перле, от ваших отговорок и явных утверждений раздвинет глаза, чтобы еще раз перечитать что вы написали. Код ниже работает только потому, что происходит поиск метода data() таким же образом как делает перл при поиске методов из родительского класса:

package My;

sub new {
  bless [], shift;
}

sub data {
  die "ales gut";
}

package My::SubClass;
use parent -norequire qw(My);

package main;

my $obj = new My::SubClass;

$obj->data();

vs.

use EV; # our "parent class"
use AnyEvent;

my $t = AE::timer 1, 1, sub {
  my ($w) = @_; # our subclass is EV::timer here !
  $w->data();
};

Понятно, что если будут использовать POE, Event, то поведение аналогичных watchers из этих модулей AnyEvent полностью наследует.

Но что вы пишите, еще раз:

Одна из интересных особенностей интерфейса AnyEvent — это необходимость использования замыканий, поскольку нет другой возможности передать параметры в колбэк-функцию.