Perl에서는 패키지가 알려진 경우 콜백 또는 코드 참조를 지정하는 것이 매우 간단합니다.Perl에서 콜백으로 사용할 메소드를 동적으로 선택하는 방법은 무엇입니까?
package Foo;
sub foo { print "in foo" }
# and then
package main;
sub baz {
my $code = shift;
$code->();
}
baz(\&Foo::foo);
그러면 in foo
이 인쇄됩니다.
다음과 같이 매우 사소한 객체가 있다고 가정 해 보겠습니다.
package Foo;
sub new { bless {}, shift }
sub bar { print "in bar" }
sub baz { print "in baz" }
위의 방법 (\ & Package : Method)을 사용하여 메소드를 검색하고
package main;
my $foo = Foo->new();
my $ref = \&Foo::bar;
$foo->$ref();
하지만 때로는 (분명히, 종종) 당신은 명시 적 타입을 모른다. 말하자면 Foo
, Bar
, Baz
가 있고 모두 blat
메서드가 있습니다. 패키지 대신 객체를 기반으로 적절한 메소드에 대한 참조를 얻으려고합니다. 그것에 대해 어떻게 생각하세요?
완벽. 감사! –