星期四, 9月 18, 2014

Visitor Pattern、Functor與Lambda

Visitor Pattern與Functor都是為了保留計算環境,再將其用做之後的計算以達到彈性的目的。
例如這樣的Java程式碼可以把someone中的元素都加上3:

AddVisitor add_v = AddVisitor(3);
someone.accept(add_v);

C++也可以做出類似的計算,只是比較麻煩就不寫在這。

上述兩者只需要Lambda所產生的Closure,就可以輕鬆達到了
例如下列Python程式碼:

add_v = (lambda x: lambda y: x + y)(3)
someone.accept(add_v)
Lambda遠比許多人所想的更有威力,不是嗎?

沒有留言: