修改函数以忽略参数的函数的标准名称
Standard name for a function that modifies a function to ignore an argument
我使用 Python 是因为它通常易于阅读,但这不是 Python 特定的问题。
取下面的Python函数strip_argument
:
def strip_argument(func_with_no_args):
return lambda unused: func_with_no_args()
在使用中,我可以将一个无参数函数传递给 strip_argument
,它会 return 一个接受一个从未使用过的参数的函数。例如:
# 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
?我对标准库中具有此类功能的任何语言都感兴趣。
大多数函数式编程语言都提供 const
函数,该函数将始终忽略第一个参数,return 第二个参数。如果您将函数传递给 const,那正是您所描述的行为。
在Haskell中你可以这样使用它:
f x = x + 1
g = const f
g 2 3 == 4 --2 is ignored and 3 is incremented
我在 python 中快速搜索了这样一个函数,但没有找到任何东西。看来标准是像您一样使用 lambda 函数。
我使用 Python 是因为它通常易于阅读,但这不是 Python 特定的问题。
取下面的Python函数strip_argument
:
def strip_argument(func_with_no_args):
return lambda unused: func_with_no_args()
在使用中,我可以将一个无参数函数传递给 strip_argument
,它会 return 一个接受一个从未使用过的参数的函数。例如:
# 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
?我对标准库中具有此类功能的任何语言都感兴趣。
大多数函数式编程语言都提供 const
函数,该函数将始终忽略第一个参数,return 第二个参数。如果您将函数传递给 const,那正是您所描述的行为。
在Haskell中你可以这样使用它:
f x = x + 1
g = const f
g 2 3 == 4 --2 is ignored and 3 is incremented
我在 python 中快速搜索了这样一个函数,但没有找到任何东西。看来标准是像您一样使用 lambda 函数。