假設我有sub1()和sub2()。 sub2僅從sub1調用。是否最好使用匿名sub來最小化sub2的範圍,以便只有sub1可以看到sub2?使用匿名潛艇將Perl中的子範圍最小化是否是一種好的做法?
例1(範圍沒有最小化):
sub sub_called_only_in_calc {
#do s.th
#return s.th
}
sub calc {
my $n = sub_called_only_in_calc(1,2,3);
#...
return $n;
}
例2(範圍與匿名子最小化):
sub calc {
#my or state
my $sub_called_only_in_calc = sub {
#do s.th
#return s.th
};
my $n = $sub_called_only_in_calc->(1,2,3);
#or
#my $n = sub {
#do s.th
#return s.th
#}->(1,2,3);
return $n;
}
這看起來像基於意見的問題,但我只會使用較小的範圍[閉包](http://stackoverflow.com/q/17039427/223226)。另外我想''我的$ n = sub {..}'任務有一些開銷。 –
如果僅調用一次,則可以使用裸循環('{...}')。 – ikegami
雖然我提出了一個答案,但我認爲這個問題應該以*「主要是基於意見的」*爲理由迅速結束。我們已經看到了不可證實的分歧的開始,Stack Overflow是關於*可證明的解決方案*。 – Borodin