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

我不是很确定如何命名问题,但请考虑以下 Lua 代码:

print(function ()
    s = ""
    for i = 1, 10 do
      s = s..tostring(i)
    end
    return s
  end)

但这只打印函数地址,因为 function()返回闭包。 有没有方法来评估匿名函数? 像在 scheme 中那样,我可以在其他括号中拥抱 lambda 吗?

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

当然,我知道我可以事先定义函数并稍后调用它,但我只是好奇在 Lua 中是否有可能。 提前感谢所有答复。

原文链接 https://stackoverflow.com/questions/10175156

点赞
stackoverflow用户314278
stackoverflow用户314278

你需要将函数定义括在圆括号中,并在后面加上 () 来调用它。将以下内容放入 Lua 解释器中:

> print((function ()
    s=""
    for i=1,10 do
       s=s..tostring(i)
    end
    return s
  end)())

将会输出以下内容:

> 12345678910
2012-04-16 14:20:44
stackoverflow用户298661
stackoverflow用户298661

如果您想实现全局行为,则最简单的解决方法是将 print 钩住,使其评估任何传递给它的函数。这样,您只需将调用站点保留为lambda即可。

2012-04-16 18:06:54