我觉得这篇文章很有趣 http://okmij.org/ftp/Scheme/oop-in-fp.txt
所以我试着编写一个类似闭包的类(只是一个玩具),用Python实现如下:
def clos(x,y):
def getx():
print(x)
def gety():
print(y)
def setx(i):
nonlocal x
x = i
def sety(i):
nonlocal y
y = i
lc = locals()
return lambda x,*y:lc[x](*y)
k=clos(1,2)
k("getx")
k("gety")
k("setx",2)
k("getx")
不过,我觉得lc = locals()
看起来很笨重。但是我不能在下面的句子中使用return lambda x,*y:locals()[x](*y)
,因为它将构建一个不同的环境。你知道吗
有什么办法让它看起来更简单吗?你知道吗
怎么样
相关问题 更多 >
编程相关推荐