2014年3月29日 星期六

ruby- block , Proc ,lambdas ,Methods

來源 http://rubyer.me/blog/917/

節錄

Procs vs Block
什麼時候用blocks而不用Procs呢?
1、Block:方法把一個對象拆分成很多片段,並且你希望你的用戶可以與這些片段做一些交互。
2、Block:希望自動運行多個語句,如數據庫遷移(database migration)。
3、Proc:希望多次復用一段代碼。
4、Proc:方法有一個或多個回調方法(callbacks)。

lambdas vs Procs
Ruby中的Procs是代碼片段(code snippets),不是方法。因此,Proc的return就是整個方法的return。
但lambdas就像是單獨的methods(只不過是匿名的),所以它要檢查參數個數,且不會覆蓋整個方法的返回。
因此,最好把lambdas當作另一種methods的寫法,一種匿名的方式。
square不是Proc,而是Method。Method與lambda用法相同,因為它們的概念是一樣的。不同的是Method是有名字的method,而lambda是匿名method

沒有留言:

張貼留言