En Perl, il est assez trivial de spécifier un rappel ou une référence code si son emballage est connu:En Perl comment choisissez-vous dynamiquement quelle méthode utiliser comme callback?
package Foo;
sub foo { print "in foo" }
# and then
package main;
sub baz {
my $code = shift;
$code->();
}
baz(\&Foo::foo);
Et ceci affiche in foo
.
Disons que vous avez un objet, jamais si trivial, comme ceci:
package Foo;
sub new { bless {}, shift }
sub bar { print "in bar" }
sub baz { print "in baz" }
Vous pouvez consulter la méthode en utilisant la manière ci-dessus (\ & Package: méthode) et l'appeler comme
package main;
my $foo = Foo->new();
my $ref = \&Foo::bar;
$foo->$ref();
Mais parfois (d'accord, souvent) vous ne connaissez pas le type explicite. Disons qu'il y a Foo
, Bar
, Baz
, et ils ont tous leur propre méthode . Vous voudriez obtenir la référence à la méthode appropriée, basée sur l'objet au lieu du paquet. Comment allez-vous à ce sujet?
Parfait. Merci! –