In Perl, ist es ziemlich trivial einen Rückruf oder Referenz-Code angeben, wenn sein Paket bekannt ist:In Perl wie wählen Sie dynamisch, welche Methode als Callback verwendet werden soll?
package Foo;
sub foo { print "in foo" }
# and then
package main;
sub baz {
my $code = shift;
$code->();
}
baz(\&Foo::foo);
Und das druckt in foo
.
Können sagen, Sie ein Objekt haben, noch so trivial, wie folgt aus:
package Foo;
sub new { bless {}, shift }
sub bar { print "in bar" }
sub baz { print "in baz" }
Sie können die Methode unter Verwendung der obigen Art und Weise nachschlagen (\ & Paket: Method) und nennen Sie es wie
package main;
my $foo = Foo->new();
my $ref = \&Foo::bar;
$foo->$ref();
Aber manchmal (okay, oft) kennen Sie den expliziten Typ nicht. Sagen wir es gibt Foo
, Bar
, Baz
, und sie alle haben ihre eigene blat
Methode. Sie möchten den Verweis auf die entsprechende Methode basierend auf dem Objekt anstelle des Pakets abrufen. Wie würdest du das machen?
Perfekt. Vielen Dank! –