跳到主要內容

發表文章

目前顯示的是 2月, 2008的文章

思考程式的方式--Higher-Order Perl

這段程式碼很有意思,事實上我們常常在寫程式時創造一些可重複使用的架構,但是怎麼做會更靈活? 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 的味道,不是嗎?