关于上篇多重赋值,还发现一个特性
也算是函数的一个特性
函数的返回值支持返回多个。
可以使用多重赋值被多个变量接收。
如:
function func()
return 1,2
end
a,b=func()
print(a)
print(b)
debug
1
2
这样就不需要手动创建一个集合去返回了。
非常便捷就可以为指定变量赋予指定的值
局部
在lua中也有语句块Chunk的概念,有块的概念就有局部的概念,在lua局部变量使用local语句来创建。
测试在Chunk脚本中加载multiplyAssignment脚本
在Chunk.lua脚本中的定义
---chunk.lua
print("Hello world")
dofile("E://multiplyAssignment.lua")---注意lua路径不能包含中文,至于如何解决中文问题,后议
print(worldVariable)
print(localVariable)
在multiplyAssignment.lua脚本中的定义
---multiplyAssignment.lua
function func()
return 1,2
end
a,b=func()
print(a)
print(b)
local localVariable="Local"
worldVariable="World"
输出结果
Hello world
1
2
World
nil
得出结果:
local局部变量定义后 访问范围限制在语句块中,或者是在该脚本中。(脚本也属于一个块)简称类块,一旦超出这个块的话该变量就随调用栈的销毁而销毁。
语句块分为 方法块,逻辑分支块、while循环块、类块等等。
下面看一下全局变量和局部变量同名时候的情况
function VariableClash()
x=10
if x==10 then
local x=20
print(x)
x=30
print(x)
end
print(x)
end
VariableClash()
输出结果
20
30
10
可以看到与c#的规则一样,在这个块中出现同名的局部变量,总是以局部变量优先进行运算,除非特点指定这个变量是全局变量。
那么如何在局部块中使用全局变量。
待研究
lua编写推荐:尽可能地使用局部变量,可以避免将一些无用的名称引入全局环境,造成环境污染。此外,访问局部变量比访问全局变量来的快,概念是跟c#堆栈调用原理一样。