我有一组方法,我希望调用者能够覆盖一个值,或者它默认为实例变量。
所以我一直在努力做的是:
method foo( Str :$blah = $self->blah ) {
#doStuff
}
这会引发解析错误,所以我最终到处都这样做
method foo( Str :$blah? ) {
$blah = $self->blah unless defined $blah;
#doStuff
}
不可怕,但当 MooseX::Method::Signatures 支持默认概念并修复了我所有其他标准的“方法开始”行时,这似乎很愚蠢。
当我尝试做这样的事情并且我在网络上找不到遇到同样问题的其他人时,我总是以错误的方式解决问题。似乎我可能试图将功能程序塞入 oo 布局,而不是实际的 oo,因为这些方法是用于外部调用的更多辅助函数,而不是在对象上操作的方法。因此,只需检查我是否只是错误地定义它,或者我正在做的事情是否“愚蠢”或 Parse::Method::Signatures 不支持。