Lua中 'local xxx do ... end' 到底表达了什么
前言在一些lua的项目中偶尔会发现 分析首先实际代码中的写法可能看起来是这样的: local subBlock do
function func1( ... ) -- body end name = "test" local array = {1,2,3,4} end print("name =",name) print("array =",array)
我们知道,其实 因此执行上述lua代码的结果如下:
那么 我们可以写成这样: local a
do
print("test1")
end
还可以写成这样: local a = "test2"
do
print("a =",a)
end
甚至是这样: local a,b,c = "test3",1,0
do
print("a =",a)
end
看到这里是不是发现’local xxx do … end’这个结构很简单的,可是这个 local block
do
local a = 1
function block()
print("a =",a)
end
print(block)
end
说到这里, local function func1()
function func2()
-- body
end
print("call func1 ...")
end
上述代码中的 local function func1()
function func2()
-- body
end
print("call func1 ...")
end
print("func1 =",_G["func1"])
print("func2 =",_G["func2"])
运行的结果如下:
有没有很惊奇 local function func1()
function func2()
-- body
end
print("call func1 ...")
end
print("func1 =",_G["func2"])
func1()
print("func1 =",_G["func2"])
运行的结果如下:
看来这次比较符合预期, 那么现在我们回过头来看一下这个例子: local block
do
local a = 1
function block()
print("a =",a)
end
print(block)
end
print("block =",_G['block'])
实际上你如果认真看了前面的分析,你会发现这与在函数中定义函数的例子是不一样的,这仅仅在定义了一个局部变量之后又定义了一个同名的函数而已,那是不是函数
结论
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |