1

これはPerlを使用して可能ですか:

my @array = ($class1,$class2,$class3);

foreach my $c (@array)
{
    my $temp = $c->new();
    $temp->run($var1,$var2);
}

この背後にある考え方は、配列には常に異なるクラス名が含まれるということです。次に、そのクラスのオブジェクトを作成し、そこからメソッドを実行したいと思います。各クラスは多少似ていますが、実行メソッドに独自のロジックが含まれていますか?

これが不可能な場合、これを行う別の方法はありますか? これは悪いプログラミングですか?

4

4 に答える 4

5

run-Method が常にアクセス可能であることを確認する必要があります。

my @array = ($class1,$class2,$class3);

foreach my $class (@array) {
    my $temp = $class->new();
    if ($temp->can('run') {
        $temp->run($var1,$var2);
    } else {
        ...
    }
}
于 2013-07-01T11:00:32.327 に答える
0

以前の回答はあなたが探しているものをカバーしていますが、この種のことを行うときに各クラスのパッケージを明示的に使用する必要がない場合は、 Module::Runtime が役立つ可能性があることをおそらく追加します。

use Module::Runtime;
for my $cls (@classes) {
  my $obj = use_module($cls)->new;
  ...
}
于 2013-07-01T13:30:20.583 に答える
-1
 use strict;
 use warnings;
 use class1;
 use class2;
 use class3;

 my @array = qw(class1 class2 class3);

 foreach my $c (@array)
 {

     my ($var1, $var2) = (12,34);
     my $temp = eval { $c->new };
     $temp->run($var1,$var2);
 }

テストされていませんが、これは調査する必要がある種類のものです。使用しているクラスを「使用」する必要があり、将来の問題を何時間も節約するために常に strict を使用する必要があります

于 2013-07-01T11:00:28.673 に答える