這段程式碼很有意思,事實上我們常常在寫程式時創造一些可重複使用的架構,但是怎麼做會更靈活?
ps. 程式碼哉自Higer-Order Perl
這程式是一個 list 目錄-檔案的 遞迴程式,通常我們寫完了以後,會希望從這個結構擴充,而下面程
式碼中的 $code->($top); 正是可以由外部擴充邏輯的地方(callback)
sub dir_walk {
my ($top, $code) = @_;
my $DIR;
$code->($top);
if (-d $top) {
my $file;
unless (opendir $DIR, $top) {
warn "Couldn’t open directory $top: $!; skipping.\n";
return;
}
while ($file = readdir $DIR) {
next if $file eq '.' || $file eq '..';
dir_walk("$top/$file", $code);
}
}
}
sub print_dir {
print $_[0], "\n";
}
dir_walk('.', \&print_dir );
在這裡我們看到,程式原始的架構是list 目錄-檔案 , 但是我們可以傳給function 2個參數
1 起始路徑 2 function , 恩! 這看起來有濃濃的 functional 的味道,不是嗎?
我的雲端生活網 - Life+
- 107年資訊月傑出資訊人才獎 - 1/13/2024
- Bikonnect電輔自行車 - 1/8/2024
- 大型語言模型(LLM)的轉折點 - 1/1/2024
- LLM提示詞 - 12/30/2023
- #又見一般人 - 12/27/2023
Sunday, February 24, 2008
Subscribe to:
Posts (Atom)