2009-02-02 56 views
8

我最近开始使用模块MooseX::Declare。我喜欢它的语法。它是优雅和整洁。有没有人遇到过想要在一个类中编写许多函数(其中一些很大)并且类定义运行在页面中的情况?是否有任何解决方法使类定义只是声明了函数并且在类之外实际定义了函数定义?我可以使用MooseX :: Declare在类之外定义函数吗?

我想找什么是这样的 -

class BankAccount { 
    has 'balance' => (isa => 'Num', is => 'rw', default => 0); 
    # Functions Declaration. 
    method deposit(Num $amount); 
    method withdraw(Num $amount); 
} 

# Function Definition. 
method BankAccount::deposit (Num $amount) { 
    $self->balance($self->balance + $amount); 
} 

method BankAccount::withdraw (Num $amount) { 
    my $current_balance = $self->balance(); 
    ($current_balance >= $amount) 
    || confess "Account overdrawn"; 
    $self->balance($current_balance - $amount); 
} 

我可以看到,有一种方法可以使课堂可变的。有谁知道该怎么做?

回答

7

简单(但需要添加到文档)。

class BankAccount is mutable { 
} 

另一方面,为什么你要在课堂外定义你的方法?

你可以去

class BankAccount is mutable { 
    method foo (Int $bar) { 
     # do stuff 
    } 
} 
0

我想我的类定义短,并给予的类是什么一个抽象的概念。我喜欢用C++完成的方式,您可以选择使用范围解析运算符来内联或者外部定义函数。这使得类定义简洁而整齐。这是我正在寻找的。

谢谢你的时间。

+0

发送电子邮件给作者,感谢他的出色工作,告诉他你爱的语法,然后问他是否认为这样的事情是可能的,以及他是否愿意这样做。 可能发生的最坏情况是他可以说'不'。 另一个地方发布将是驼鹿邮件列表。 – daotoad 2009-02-05 07:04:28

相关问题