4
可以说我想添加say
功能到String
(注意:这是一个比现实更简单的例子)。所以我可以有我怎样才能实现一个驼鹿型特征的新手柄?
has foo => (
isa => 'Str',
traits => [ 'String' ],
handles => {
say_foo => 'say',
}
);
然后我当然可以用它来做。
$self->foo('bar');
$self->say_foo;
这将打印字面上
'bar\n'
我想象中的子程序会是这样的
sub _say_attr {
my ($self, $attr) = @_;
say $attr;
}
谁能帮我填,我怎么可能真正实现这个差距?我没有看到关于如何编写自己的handles
的文档。
我真的不需要知道如何修改String
特征。就像我希望能够拥有一个通用处理程序一样,我不需要知道当前属性的名称就可以使其工作。
has foo => (
isa => 'Str',
traits => [ 'PrintString' ],
handles => {
say_foo => 'say',
}
);
has bar => (
isa => 'Str',
traits => [ 'PrintString' ],
handles => {
say_bar => 'say',
}
);
所以say
这里可能是它不需要被调用它的属性的硬编码名称的函数的标识符。
没有那么多,我需要说...修改字符串...但我不想知道该属性的名称,所以我可以将此行为一般应用于多个属性。 – xenoterracide
也更新了问题。 – xenoterracide
@xenotarracide,然后我建议你先看看现有的特征并模拟它的功能。我仍然有问题,然后问一个更具体的问题。 – ikegami