shota243さんのダブルlambda コメントから: 「ループの『変数』を覚えているから lambda の外でその変数の値が変われば変わった値を取ってきます。lambdaを作成されたときの値を覚えておくためにはそのための変数をそれぞれ作成してその変数を覚えさせる必要があります。」 closures=[] for i in range(5): closures.append( (lambda x: # <--このスコープにiの個々の値を覚えさせるんだな。 lambda: "foo"+str(x) )(i) ) for f in closures: print f() 覚えさせる分、余分にlambdaでスコープを作ったってことかな。 面白い技を教わってしまった。shota243さん、ありがとう。 ダブルラムダのcommon lisp版 shiroさんから頂いたコメントのコードを変更してみた
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く