擅长:python、mysql、java
<p>根本不需要兰姆达。lambda只是用来定义一个函数并同时使用它的同位糖。就像任何lambda调用都可以用显式def替换一样,我们可以通过创建满足您需要的真实类并返回它来解决您的问题。</p>
<pre><code>class Double:
def run(self,x):
return x*2
class Triple:
def run(self,x):
return x*3
def createMultiplier(n):
class Multiply:
def run(self,x):
return x*n
return Multiply
class Library:
def __init__(self,c):
self.c = c()
def Op(self,val):
return self.c.run(val)
op1 = Double
op2 = Triple
op3 = createMultiplier(5)
lib1 = Library(op1)
lib2 = Library(op2)
lib3 = Library(op3)
print lib1.Op(2)
print lib2.Op(2)
print lib3.Op(2)
</code></pre>