Why would I use Perl anonymous subroutines instead of a named one?子程序/函數引用啓發我思考的優點:匿名存儲在數據結構
- 存儲在陣列中,哈希和標量匿名潛艇。
這是一個很酷的概念,但它在任何方面的實用嗎?有什麼理由不得不使用存儲在某種數據結構中的匿名subs/sub引用?或者可能是一個方便的情況?
我明白爲什麼在某些情況下需要匿名subs,例如處理共享變量(當一個匿名sub在另一個sub內被聲明時),但除非我遺漏了某些東西,我只是沒有看到使用任何類型的函數引用。看起來我們應該直接調用這些函數,代碼看起來會更好,更有組織。
請告訴我我錯了。我很想有一個很好的理由來使用這些東西。
在此先感謝。 >能($方法)在概念上類似於,但更靈活和細節被隱藏 -
my %disp = (
foo => sub { 'foo' },
bar => sub { 'bar' },
);
my $cmd = get_cmd_somehow();
if (defined $disp{$cmd}) {
$disp{$cmd}->(@args)
} else {
die "I don't know how to handle $cmd"
}
(經由方法調度:
查找調度表的概念。 http://en.wikipedia.org/wiki/Dispatch_table – DavidO 2013-05-13 23:49:06
那麼,符號表基本上是一個巨大的HoH(任意深度),並且它包含對每個命名子的引用。而這只是衆多用途之一。 – ikegami 2013-05-13 23:56:20
@ikegami一些語言是否也將它用於函數中的閉包,以便它們可以跟蹤程序狀態? – squiguy 2013-05-13 23:59:40