问题:我想存储一个对象列表,以便以后可以调用相应的方法
my @tc = ("TC_1","TC_2");
my %obj_list = ();
foreach my $test (@tc) {
$obj_list{$test} = Test->new($test);
}
在后面的同一模块文件中,我需要调用这些对象的相应方法
foreach my $test (keys %obj_list) {
if (some specific condition is satisfied for a test) {
1 --> $obj_list->$test->action();
2 --> $obj_list{$test}->action();
}
}
我尝试了1和2,但它们却无法正常工作。有人可以告诉我在这里我会做错什么。任何输入都会有很大帮助。
答案 0 :(得分:3)
您的代码基本上是正确的-除了一些语法错误之外。
# Use ( ... ) to initialise an array.
my @tc = ("TC_1","TC_2");
my %obj_list = ();
foreach my $test (@tc) {
$obj_list{$test} = Test->new($test);
}
foreach (keys %obj_list) {
if (some specific condition is satisfied for a test) {
# This version is incorrect
# $obj_list->$key->action();
# This version will work, except you have the
# key in $_, not $key.
$obj_list{$_}->action();
}
}
在代码中添加use strict
和use warnings
可以帮助您发现其中的一些问题。