June 27,2008

Boo(20)-Generator 函式

Generator 函式其實就跟 C# 的 Iterator 一樣,利用 yield 關鍵字先把值傳回讓呼叫者使用。 使用 Generator/Iterator 最大的好處是可以讓函式只做必要的邏輯,而不需要把一些事情綁在迴圈裡面。 下面就是一個很標準的尋訪目錄樹的範例,尋訪的工作交給 walk,主程式則負責依據傳回的值作處理。
import System
import System.IO

def walk( path as string ):
  di = DirectoryInfo( path )
  for d in di.GetDirectories():
    yield d as FileSystemInfo
  for f in di.GetFiles():
    yield f as FileSystemInfo

for node in walk( "." ):
  if node isa DirectoryInfo:
    print "[${node.Name}]"
  elif node isa FileInfo:
    print node.Name
參考自:Generators p.s. 這系列文章一定會持續寫到 macro 出現為止。


Posted by elleryq at 樂多Roodo! │14:08 │回應(0)引用(0)Boo
樂多分類:網路/3C 共同主題:.Net/Mono 工具:加入樂多書籤編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/6236271