История изменений
Исправление KennyMinigun, (текущая версия) :
Ну в общем-то без reflection и introspection тебе всяко придётся что-нибудь «хардкодить»,
В перле это попроще делается :)
package MyApp::VCS;
use Moose::Role;
use Moose::Util qw(does_role);
use Module::Pluggable
max_depth => 1,
search_path => [ __PACKAGE__ ]
;
# в этом массиве будут имена всех классов в неймспейсе MyApp::VCS::*
# которые имплементируют роль MyApp::VCS
my @successors = grep { does_role($_, __PACKAGE__) } __PACKAGE__->plugins;
Ну.. да, по сути это reflection.
Исправление KennyMinigun, :
Ну в общем-то без reflection и introspection тебе всяко придётся что-нибудь «хардкодить»,
В перле это попроще делается :)
package MyApp::VCS;
use Moose::Role;
use Moose::Util qw(does_role);
use Module::Pluggable
max_depth => 1,
search_path => [ __PACKAGE__ ]
;
# в этом массиве будут имена всех классов в неймспейсе MyApp::VCS::*
# которые имплементируют роль MyApp::VCS
my @successors = grep { does_role($_, __PACKAGE__) } __PACKAGE__->plugins;
Ну.. да, по сути это introspection.
Исходная версия KennyMinigun, :
Ну в общем-то без reflection и introspection тебе всяко придётся что-нибудь «хардкодить»,
В перле это по-проще :)
package MyApp::VCS;
use Moose::Role;
use Moose::Util qw(does_role);
use Module::Pluggable
max_depth => 1,
search_path => [ __PACKAGE__ ]
;
# в этом массиве будут имена всех классов в неймспейсе MyApp::VCS::*
# которые имплементируют роль MyApp::VCS
my @successors = grep { does_role($_, __PACKAGE__) } __PACKAGE__->plugins;
Ну.. да, по сути это introspection.