2012-02-02 25 views
2

我試圖將類重載到perl中的字符串。例如:如何在perl中重載字符串

use MooseX::Declare; 

class overloadingInPerl{ 
    use overload '""' => sub {shift->printOut()}; 


    method printOut(){ 
     return "Overloading worked"; 
    } 
} 


my $overloadingTrial = overloadingInPerl->new(); 
print $overloadingTrial; 

打印出:overloadingInPerl = HASH(0x1f520fc)

要打印:重載工作

任何想法?

回答

1

其他,如指向的@oylenshpeegul您還可以通過()從傳遞它的名字作爲字符串,刪除掉落CODEREF調用的實際功能方法聲明。

Errrm,比表示更容易表示。

#!/usr/bin/env perl                
use Test::More tests=>1;               
use MooseX::Declare;                
class C is dirty {                 
    use overload '""' => 'to_string';            
    method to_string { sprintf "#<%s data='%s'>", $self->meta->name, $self->data } 
    has data => (is=>'rw',default=>'');           
}                     
is(C->new(data=>'hello'), "#<C data='hello'>");         
相關問題