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