大學裡常常發生佔位置的現象:頭天晚上拿一本書放在課座上,表示位置已經被佔了;第二天才來到這個座位上,翻開書正式上課.在這個現象中,「書本」充當了「佔位符」的作用。
在ruby語言中,yield是佔位符:先在前面的某部分**中用yield把位置佔著,然後才在後面的某個**塊(block)裡真正實現它,從而完成對號入座的過程.
#定義find
def find(dir)
dir.entries(dir).each #獲得dir目錄下的檔名列表;對每個檔名,用yield來處理(至於怎麼處理,還不知道,占個位置先^_^)
end
#使用find
find(".") do |f| #block開始
puts f #用輸出檔名這個語句,真正實現了yield的處理(也可以用任何其他語句)
end #block結束
#定義finddef find(dir)
dir.entries(dir).each #獲得dir目錄下的檔名列表;對每個檔名,用yield來處理(至於怎麼處理,還不知道,占個位置先^_^)
end#使用find
find(".") do |f| #block開始
puts f #用輸出檔名這個語句,真正實現了yield的處理(也可以用任何其他語句)
end #block結束
由此可見,yield屬於定義層,屬於宣告層,也就是在心裡說一句:"這個位置不錯,我先用書本佔了再說!";而block屬於使用層,實現層,也就是最終你坐在了你先前佔的位置上,從而真正的實現了對號入座的過程.
最後,請大家不要問我"萬一書本被偷了怎麼辦?"之類的問題,謝謝合作。
Python中yield的簡單理解
yield常見用法 該關鍵字用於函式中會把函式包裝為generator。然後可以對該generator進行迭代 for x in fun param 在乙個函式中,程式執行到yield語句的時候,程式暫停,返回yield後面表示式的值,在下一次呼叫的時候,從yield語句暫停的地方繼續執行,如此迴圈...
徹底理解Python中的yield
閱讀別人的python原始碼時碰到了這個yield這個關鍵字,各種搜尋終於搞懂了,在此做一下總結 通常的for.in.迴圈中,in後面是乙個陣列,這個陣列就是乙個可迭代物件,類似的還有鍊錶,字串,檔案。它可以是mylist 1,2,3 也可以是mylist x x for x in range 3 ...
對於Python中yield的理解
yield常見用法 該關鍵字用於函式中會把函式包裝為generator。然後可以對該generator進行迭代 for x in fun param 在乙個函式中,程式執行到yield語句的時候,程式暫停,返回yield後面表示式的值,在下一次呼叫的時候,從yield語句暫停的地方繼續執行,如此迴圈...