我不确定如何标题,但请考虑以下lua代码:
print(function ()
s = ""
for i = 1, 10 do
s = s..tostring(i)
end
return s
end)
但是这只打印了函数地址,因为function()返回一个闭包。有没有办法评估匿名函数?就像我可以在附加括号中使用lambda的方案一样?
((lambda ()(display "Hello World")))
当然我知道,我可以事先定义这个函数并稍后调用它,但我很好奇是否可以在lua中使用它。提前致谢所有回复。
答案 0 :(得分:14)
您需要将函数定义包装在括号中,然后通过添加()
来调用它。把它放在Lua解释器中:
> print((function ()
s=""
for i=1,10 do
s=s..tostring(i)
end
return s
end)())
给出以下输出
> 12345678910
答案 1 :(得分:4)
如果这是您想要的全局行为,最简单的解决方案是挂钩打印,以便评估传递给它的任何函数。这样你就可以简单地将呼叫站点保留为lambda。