2011.06.19
メモ

Ruby

def f
i = 0
return lambda {
i += 1
}
end

x = f
puts x.call()
puts x.call()
puts x.call()

Python 2.x

def f():
i = [0]
def g():
i[0] += 1
return i[0]
return g
x = f()
print x()
print x()
print x()

Python 3.x

def f():
i = 0
def g():
nonlocal i
i += 1
return i
return g

x = f()
print(x())
print(x())
print(x())

ちなみに、ジェネレータのおまけ

def f():
i = 0
while True:
i += 1
yield i

g = f()
print g.next()
print g.next()
print g.next()

この記事へのコメント

この記事へのトラックバック
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力] (画像の中の文字を半角で入力してください。)



※ブログオーナーが承認したコメントのみ表示されます。
Rebuild at 2018/04/23 20:24
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。