如何解决可以在范围之外访问此本地功能,有任何解释吗?
for i = 1,20 do --Create a loop
if i < 10 then
local function LessThan10()
return i
end
end
end
print(LessThan10())
令人惊讶的是,尽管
LessThan10
在条件语句中,并且它是一个local
函数(实际上不是函数,而是变量)。不知何故,我仍然可以打印出答案
这很有趣(我在Zerobrane中检查过,
LessThan10
是本地函数)
编辑:我想这是我的口译员问题,我更改了口译员,这是错误的事情。
解决方法
在Lua 5.0解释器中测试:
Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf,PUC-Rio
> for i = 1,20 do --Create a loop
>> if i < 10 then
>> local function LessThan10()
>> return i
>> end
>> end
>> end
> print(LessThan10())
stdin:1: attempt to call global `LessThan10' (a nil value)
stack traceback:
stdin:1: in main chunk
[C]: ?
我也不敢相信这是/是有效的代码,因为局部变量仅在声明它们的块内可见。
如果您使用的是自定义Lua解释器,则应该对此进行进一步的研究。
,我对此进行了测试,它仅适用于Lua 5.0和5.1
我在Lua 5.3
上再次对其进行了测试,但它不再起作用
我的zerobrane无缘无故将我的lua版本重置为5.0,如果这个问题令您失望,对不起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。