我有一个调度表,我希望只初始化一次,并且只打算由一个函数使用。我希望将调度表移到子例程之外并移到同一个匿名块中,但是由于调度表使用闭包来调用传递给函数的对象的方法,因此将表移到函数之外会将其与对对象的访问分开. 对于这个调度表,我还有哪些其他选择?
我正在使用 Perl 5.8,所以很遗憾我无法使用state
变量。
sub foo {
my ($self, $var) = @_;
my %funcs = (
a => sub { $self->_a() },
b => sub { $self->_b() },
...
);
return $funcs{$var}->();
}