2

哈希值可以与语句或函数相关联吗?

假设我有一个键列表,我希望在哈希表中查找一个项目的值。对应检测到的key/value,我们可以直接执行一组语句吗?(不遍历所有键/值的列表)

我正在寻找比使用函数指针更好的解决方案。

4

2 回答 2

5

您可以使用匿名函数作为哈希值,

my %hash = (
  func1 => sub { return "Hello"; },
  func2 => sub { return "world"; },
);

print $hash{func1}->(), " ", $hash{func2}->(), "\n";
于 2013-05-22T07:37:44.530 回答
4

当然。你可以写这样的代码

use strict;
use warnings;

my %dispatch = (
  aa => sub {
    print "AA\n";
  },
  bb => sub {
    print "BB\n";
  },
  cc => sub {
    print "CC\n";
  },
);

for (qw/ aa cc /) {
  $dispatch{$_}->();
}

输出

AA
CC
于 2013-05-22T07:38:24.010 回答