Lambda 在lua中计算函数参数中的代码块 我真的不知道如何标题问题,但是考虑下面的LUA代码: print(function () s = "" for i = 1, 10 do s = s..tostring(i) end return s end)

Lambda 在lua中计算函数参数中的代码块 我真的不知道如何标题问题,但是考虑下面的LUA代码: print(function () s = "" for i = 1, 10 do s = s..tostring(i) end return s end),lambda,lua,anonymous-function,Lambda,Lua,Anonymous Function,但这只打印函数地址,因为function()返回闭包。有没有办法计算匿名函数?比如在方案中,我可以在附加括号中包含lambda ((lambda ()(display "Hello World"))) 当然我知道,我可以事先定义函数,然后再调用它,但我只是好奇这在lua中是否可行。提前感谢您的回复。您需要将函数定义用括号括起来,然后在后面添加()来调用它。将其放入Lua解释器: > print((function () s="" for i=1,10 do

但这只打印函数地址,因为function()返回闭包。有没有办法计算匿名函数?比如在方案中,我可以在附加括号中包含lambda

((lambda ()(display "Hello World")))

当然我知道,我可以事先定义函数,然后再调用它,但我只是好奇这在lua中是否可行。提前感谢您的回复。

您需要将函数定义用括号括起来,然后在后面添加
()
来调用它。将其放入Lua解释器:

> print((function ()
    s=""
    for i=1,10 do
       s=s..tostring(i)
    end
    return s
  end)())
给出以下输出

> 12345678910

如果这是您想要的全局行为,最简单的解决方案是挂接print,以便它计算传递给它的任何函数。这样,您就可以将调用站点保留为lambdas。

谢谢,我也有类似的想法,但我没有将函数包装在括号中。看起来比这个计划难看一点,但至少它起作用了:Dinteressing可能性,我只是在学习lua,不知道你们能做到。我会记住的