ΪʲôҪʹÓÃPerlÄäÃû×Ó³ÌÐò¶ø²»ÊÇÃüÃûµÄ×Ó³ÌÐò£¿
ÎÒÖ»ÊÇºÃÆæÎªÊ²Ã´ÔÚPerlÖÐÑ¡ÔñʹÓÃÄäÃû×ÓÀý³Ì£¬¶ø²»ÊÇÃüÃûµÄ×ÓÀý³Ì¡£Ð»Ð»¡£
½â¾ö·½·¨
>Äú¿ÉÒÔÔÚÊý×飬¹þÏ£ºÍ±êÁ¿Öд洢ÄäÃû×Ó³ÌÐò¡£
>Äú¿ÉÒÔÔÚÔËÐÐʱ¹¹½¨ËüÃÇ >Äú¿ÉÒÔ½«ËüÃÇ×÷Ϊ²ÎÊý´«µÝ¸øÆäËûº¯Êý¡£ Äã¿ÉÒ԰ѱäÁ¿±£´æÔÚÖÜΧµÄ·¶Î§ÄÚ¡£ ×îºóÒ»µã¿ÉÄÜÊÇ×îÖØÒªµÄ£¬ÒòΪËüͨ³£ÊÇPerlÖÐÃüÃûÓëÄäÃû×Ó³ÌÐò×îÍ»³öµÄÒ»¸ö·½Ãæ¡£Àý£º sub outer { my $a = 123; sub inner { print $a,"n"; } # At this point,$a is 123,so this call should always print 123,right? inner(); $a = 456; } outer(); # prints 123 outer(); # prints 456! Surprise! µ«Êǽ«¡°ÄÚ²¿¡±´ÓÒ»¸öÃüÃûµÄ×Ó³ÌÐò¸ÄΪ¶ÔÒ»¸öÄäÃû×Ó³ÌÐòµÄÒýÓã¬ËüµÄ¹¤×÷ÔÀí¾Í²»ÄÇôÁîÈ˾ªÑÈ£º sub outer { my $a = 123; my $inner = sub { print $a,"n"; }; # At this point,and since the anonymous subrotine # whose reference is stored in $inner closes over $a in the # "expected" way... $inner->(); $a = 456; } # ...we see the "expected" results outer(); # prints 123 outer(); # prints 123 (µ±È»£¬Ã¿¸öÈËµÄÆÚÍûÊDz»Í¬µÄ£¬Òò´Ë¡°Ô¤ÆÚ¡±ÖÜΧµÄ¡°¾ªÏű¨¼Û¡±) ÒÔÏÂÊÇʵ¼Ê´úÂëÖеÄÒ»¸öʾÀý(¾¡¹ÜÓ¦¸Ã×¢ÒâµÄÊÇ£¬File :: Find½çÃæÍ¨³£±»ÈÏΪÊÇÒ»¸öÔã¸âµÄ´úÂë ¨C ÓÉÓÚËüʹÓÃÈ«¾Ö±äÁ¿£¬¶ø²»ÊÇʹÓÃÄäÃû×ÓÀý³Ì)£º sub find_files { my @files; my $wanted = sub { if($something) { push @files,$File::Find::name; } }; # The find() function called here is imported from File::Find find({ wanted => $wanted },$directory); return @files; } ´«µÝÒ»¸öÃüÃû×Ó³ÌÐò×÷ΪËùÐè²ÎÊýµÄÖµ½«ÐèҪʹÓÃÖ»ÄÜʹÓÃÒ»´ÎµÄÀý³ÌÀ´ÎÛȾÃüÃû¿Õ¼ä£¬²¢ÇÒÔÚfind_files()×ÓÀý³ÌÖж¨ÒåÒ»¸öÃüÃû×ÓÀý³Ì½«»á³ÊÏÖÇ°ÃæËùչʾµÄ¡°ÒâÍ⡱ÐÐΪ¡£ £¨±à¼£ºÀî´óͬ£© ¡¾ÉùÃ÷¡¿±¾Õ¾ÄÚÈݾùÀ´×ÔÍøÂ磬ÆäÏà¹ØÑÔÂÛ½ö´ú±í×÷Õ߸öÈ˹۵㣬²»´ú±í±¾Õ¾Á¢³¡¡£ÈôÎÞÒâÇÖ·¸µ½ÄúµÄȨÀû£¬Ç뼰ʱÓëÁªÏµÕ¾³¤É¾³ýÏà¹ØÄÚÈÝ! |
- Cross Platform Development with Delphi XE7 & FireMo
- Lua µü´úÆ÷
- openresty lua-resty-redis ·â×°
- java ¨C ÈçºÎ´Ó@ComponentScan°ü»ñÈ¡½Ó¿ÚÁбí
- vb.net ¨C Òì³£ºó¼ÌÐø´úÂë
- ÈçºÎÔÚDelphiÖÐʹÓÃXMLÎļþ²éѯ£¿
- ʹÓà Cosos2dX-Lua ÖÆ×÷Ò»¸öºá°æ¹ý¹ØÓÎÏ· (2)
- ÓÃVB½áÊøExcelµÄ½ø³Ì
- BCB/DelphiÏà¹ØÎļþÀ©Õ¹Ãû½éÉÜ - ±à³ÌÎĵµ - C++Builder ÑÐ
- Êý×é ¨C ÈçºÎÔÚGolangÖд´½¨ÈýάÊý×é