能否在Lua中模拟bind的功能?

给定一个带有一个参数的 Lua 函数,是否可以将此参数绑定到一个固定值,以获得没有参数的函数?

更一般地说,我如何将 Lua 函数的某些输入参数绑定到某些值?

点赞
用户936986
用户936986

是的,这可以使用几乎任何具有以函数作为一级值的语言来完成。

function f1(a)
   return a+1
end

function bind(a)
   return function() return f1(a) end
end

local f2 = bind(42)
print(f2())
-- 43

这个特定的示例适用于特定的函数和参数数量,但可以轻松扩展以接受任意函数/参数。

2012-06-20 11:42:16