完美理解ruby中的yield的概念

2021-04-21 15:16:31 字數 864 閱讀 3011

大學裡常常發生佔位置的現象:頭天晚上拿一本書放在課座上,表示位置已經被佔了;第二天才來到這個座位上,翻開書正式上課.在這個現象中,「書本」充當了「佔位符」的作用。

在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結束  

#定義find

def 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語句暫停的地方繼續執行,如此迴圈...