2
Perl私はevalと* {$ func_name}を使って動的に関数を呼び出すことができますが、オブジェクトのメソッドでこれをどうやって行うのですか?例オブジェクトのメソッドをどのように動的に呼び出すのですか?
EZBakeOven
sub make_Cake { ... }
sub make_Donut { ... }
sub make_CupCake { ... }
sub make_Soup { ... }
sub make{
my($self,$item) = @_;
if(defined $self->make_$item){ #call this func if it exists
$self->make_$item(temp => 300, with_eggs => true);
}
}
ため
私は
$self->make('Cake');
#or maybe I have to use the full method name
$self->make('make_Cake');
ような何かを言う場合、それはあなたのような何かを行うことができるはず
$self->make_Cake();
awesome! – qodeninja
'can'はクラスと同じようにオブジェクト上で正常に動作します – ikegami
もちろん、クラスの作成者とそのユーザーの間の暗黙の同意は、非APIメソッドの内部で調整するのではなく、データの供給者。言い換えれば、ユーザーに「何を作ろうか?ケーキ、彼は言う。ファイン。 「何を作る?」彼は言う。 make_MESSが存在すると仮定すると、ユーザが操作するための関数である方がよいでしょう。もしそうでなければ、プログラマー以外の誰かがオブジェクトの内部を操作しているからです。提示された単純なケースでは、それは無害なようです。しかし、ユーザーは物事を壊すために非常に創造的な方法を見つけることができます。 – DavidO