say
の機能をString
に追加したいとしましょう(注:これは現実よりも簡単な例です)だから私は持っていたムース型形質の新しいハンドルを実装するにはどうしたらいいですか?
has foo => (
isa => 'Str',
traits => [ 'String' ],
handles => {
say_foo => 'say',
}
);
それは私がもちろん使用することができるでしょう。私はサブルーチンがこの
sub _say_attr {
my ($self, $attr) = @_;
say $attr;
}
ようなものになるだろうと想像文字通り
'bar\n'
を印刷し
$self->foo('bar');
$self->say_foo;
誰も私が私が実際にこれを実装する方法を上のギャップを埋める手助けすることはできますか?私は実際にあなた自身の書き込み方法についてのドキュメントの方法で多くを見ていません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