今日、機会があってClosureの説明をしました。
Closure = 簡単にちょっとした関数が書ける仕組み
のような誤解(?)があるようなので、ちょっとしたサンプルを書いてみました。
def pipe():
p = list()
return (lambda x: p.append(x),
lambda: p.pop(0),
lambda: 0 < len(p))
write, read, hasNext = pipe()
write('A')
write('B')
write('C')
while hasNext():
print read()
言いたいことは、Closureも見る角度は変わっているにせよ、考え方はオブジェクト志向だっていうことです。