我正在使用Python,因为它通常很容易阅读,但这不是特定于Python的问题。
采用以下Python函数strip_argument
:
def strip_argument(func_with_no_args):
return lambda unused: func_with_no_args()
在使用中,我可以将无参数函数传递给strip_argument
,它将返回一个接受一个从未使用的参数的函数。例如:
# some API I want to use
def set_click_event_listener(listener):
"""Args:
listener: function which will be passed the view that was clicked.
"""
# ...implementation...
# my code
def my_click_listener():
# I don't care about the view, so I don't want to make that an arg.
print "some view was clicked"
set_click_event_listener(strip_argument(my_click_listener))
函数strip_argument
是否有标准名称?我对标准库中具有这种功能的任何语言感兴趣。
答案 0 :(得分:2)
大多数函数式编程语言都提供const
函数,这个函数总是忽略它的第一个参数并返回它的第二个参数。如果将函数传递给const,那就是你所描述的行为。
在Haskell中你可以这样使用它:
f x = x + 1
g = const f
g 2 3 == 4 --2 is ignored and 3 is incremented
我已经在python中快速搜索了这样的函数但是没有找到任何东西。似乎标准是像你一样使用lambda函数。