【发布时间】:2010-10-13 19:13:49
【问题描述】:
所以我只是想做一件非常简单的事情:为 moose 属性定义一个自定义读取器访问器。所以我试试这个:
has 'compiled_regex' => (
isa => 'RegexpRef',
is => 'rw',
reader => 'get_compiled',
);
但是get_compiled 永远不会被调用,大概是因为compiled_regex 是读/写的。好的,没问题。我接下来试试这个:
has 'compiled_regex' => (
isa => 'RegexpRef',
writer => '_compile',
reader => 'get_compiled',
);
这会产生以下错误:
无法通过包“PrettyRegex”在 ../lib/Pretty/Regexs.pm 第 39 行找到对象方法“compiled_regex”。
指的是 _compile 方法中的这一行:
$self->compiled_regex(qr/$self->regex/);
现在我在过去 3 天里没有睡多少觉,所以也许我很困惑,但似乎即使这确实有效,它也会造成无限倒退,因为我已将作者定义为 _compile ...所以我在这里错过了什么?
尝试了思南的答案,但仍然得到:
Can't locate object method "compiled_regex" via package "PrettyRegex" at ../lib/Pretty/Regexs.pm line 41.
【问题讨论】:
-
我对 Moose 的了解不够深入,无法理解问题所在,但请有人将帖子的标题改为问题。
-
出于某种原因,我在编辑脚本时将读者的名字命名为
get_compiled_regex。这就是您收到该消息的原因。