Lua - 传递一个带有一些预设参数的函数

我想传递一个函数作为参数,这个函数需要两个参数。我希望第一个参数被填充,但第二个参数没有填充。以下是示例代码:

function a(firstarg, secondarg)
    print("这是给 a 函数的" .. firstarg .. ",b 函数给了它".. secondarg)
end

function b(givenfunction)
    givenfunction("第二个参数")

所需的函数调用:

b(a("第一次调用"))
b(a("第二次调用"))

期望的输出结果为:

这是给 a 函数的第一次调用,b 函数给了它第二个参数。
这是给 a 函数的第二次调用,b 函数给了它第二个参数。

我该如何做到这点?

点赞
用户1847592
用户1847592
```lua
function inner(firstarg, secondarg)
   print ("this is the" .. firstarg .. "to the a function and the b function gave it ".. secondarg)
end

function a(firstarg)
   return function (secondarg)
      return inner(firstarg, secondarg)
   end
end

function b(givenfunction)
   givenfunction("the second argument.")
end

b(a("first call"))
b(a("second call"))

函数inner接受两个参数firstarg和secondarg,并打印出“这是第一个参数传递给函数a的,并且函数b给它了第二个参数。”

函数a接受一个参数firstarg,并返回一个函数。此函数接受一个参数secondarg,并调用函数inner,将firstarg和secondarg传递给它。

函数b接受一个函数givenfunction,并给它传递一个字符串“第二个参数。”

b(a(“第一次调用”)) 通过将“第一次调用”作为参数传递给函数a,然后将其返回的函数作为参数传递给b来调用这两个函数。

b(a(“第二次调用”)) 通过将“第二次调用”作为参数传递给函数a,然后将其返回的函数作为参数传递给b来调用这两个函数。```
2020-02-04 18:04:06