在lua中评估函数参数中的代码块

Moe*_*Moe 9 lambda lua anonymous-function

我不确定如何标题,但请考虑以下lua代码:

print(function ()
    s = ""
    for i = 1, 10 do
      s = s..tostring(i)
    end
    return s
  end)
Run Code Online (Sandbox Code Playgroud)

但是这只打印了函数地址,因为function()返回一个闭包.有没有办法评估匿名函数?就像我可以在附加括号中使用lambda的方案一样?

((lambda ()(display "Hello World")))
Run Code Online (Sandbox Code Playgroud)

当然我知道,我可以事先定义函数并稍后调用它,但我很好奇是否可以在lua中使用它.提前致谢所有回复.

ddk*_*ddk 14

您需要将函数定义包装在括号中,然后通过添加()after来调用它.把它放在Lua解释器中:

> print((function ()
    s=""
    for i=1,10 do
       s=s..tostring(i)
    end
    return s
  end)())
Run Code Online (Sandbox Code Playgroud)

给出以下输出

> 12345678910
Run Code Online (Sandbox Code Playgroud)