使用语句或函数作为值来散列键?

时间:2013-05-22 07:21:52

标签: perl hash

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

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

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

2 个答案:

答案 0 :(得分:5)

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

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

print $hash{func1}->(), " ", $hash{func2}->(), "\n";

答案 1 :(得分: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