大佬教程收集整理的这篇文章主要介绍了lua – 当chunk函数返回nil时load()的行为,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
load()
:
从我的测试来看,这实际上并非如此.或者说,文档至少具有误导性.
考虑这个示例脚本:
function make_loader(return_at) local x = 0 return function() x = x + 1 if x == return_at then return 'return true' end return nil end end x = 0 repeat x = x + 1 until not load(make_loader(X))() print(X)
输出是make_loader()返回的函数的连续调用次数,在load()放弃之前返回nil并返回一个不返回任何函数的函数.
如果要以面值取得文档,可以预期此处的输出为“1”.但是,输出为“3”.这意味着调用load()的参数,直到它在load()放弃之前返回nil三次.
另一方面,如果chunk函数立即返回一个字符串,然后在后续调用中返回nil,则只需要一个nil来停止加载:
function make_loader() local x = 0 return { fn=function() x = x + 1 if x == 1 then return 'return true' end return nil end,get_x=function() return x end } end loader = make_loader() load(loader.fn) print(loader.get_x())
这正如我所期望的那样打印“2”.
所以我的问题是:文档错了吗?出于某种原因,这种行为是否可取?这只是load()中的一个错误吗? (看起来似乎有意,但我找不到任何解释原因的文件.)
以上是大佬教程为你收集整理的lua – 当chunk函数返回nil时load()的行为全部内容,希望文章能够帮你解决lua – 当chunk函数返回nil时load()的行为所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。