2013-05-22 62 views
2

可以將哈希值與語句或函數關聯嗎?將語句或函數作爲值的鍵散列?

比方說,我有一個鍵的列表,我希望查找哈希表中的項目的值。對應於檢測到的鍵/值,我們是否可以直接執行一組語句? (無需遍歷所有鍵/值列表)

我正在尋找比使用函數指針更好的解決方案。

+0

什麼是使用函數指針的問題,我們怎麼知道你會認爲什麼是*「更好」 *? – Borodin

回答

5

你可以使用匿名函數作爲哈希值,

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

print $hash{func1}->(), " ", $hash{func2}->(), "\n"; 
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