如果我使用给定的调度样式函数来表示一对,我如何使用一行lambda
函数实现相同的功能?
# ADT Level 0 (dispatch-style pair)
def make_pair(x, y):
"""Dispatch-style pair"""
def dispatch(m):
if m == 0:
return x
elif m == 1:
return y
return dispatch
答案 0 :(得分:3)
您可以执行以下操作:
make_pair = lambda x,y: lambda m: x if m == 0 else y if m == 1 else None
外部lambda返回一个(内部)lambda,等待一个参数m
,它返回外部创建的作用域中的绑定变量。
>>>one_two = make_pair(1, 2)
>>>one_two(1)
2
>>> one_two(2)
>>>
答案 1 :(得分:2)
您可以使用imbricated lambdas返回lambda表达式:
>>> make_pair=lambda x,y:lambda m:x if m==0 else y
>>> a=make_pair(2,4)
>>> a(1)
4
>>> a(0)
2
lambda m:x if m==0 else y
(或多或少)等同于您的调度函数(a(2)
将在我的情况下返回4)