2014-12-03 66 views
2

我打電話的方法如下:

$self->class->method 

我想傳遞給該方法的引用作爲參數傳入的子程序。

我已經試過

\&{ $self->class->method } 

,但我得到了以下錯誤:

Unable to create sub named "" 

如何做到這一點任何想法?

回答

2

您可以採取的靜態類方法的引用,但在你的情況下,你可以使用匿名閉包來實現類似,

my $ref = sub { $self->class->method }; 

# .. 
my $result = $ref->(); 
2

class方法是有些奇怪。我希望有一個像這樣的名字返回類字符串的方法,但它顯然返回一個對象,因爲它有一個方法method

我建議您使用UNIVERSAL::can,它返回給定方法的引用(如果存在)。所以,你可以這樣寫

my $method_ref = $self->class->can('method'); 

mysub($method_ref); 
0

代碼,您還可以使用curry模塊來實現這一目標:

use curry; 

my $mref = $self->class->curry::method;