lua系统学习08-Chunk与局部变量

关于上篇多重赋值,还发现一个特性
也算是函数的一个特性
函数的返回值支持返回多个。
可以使用多重赋值被多个变量接收。
如:

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#堆栈调用原理一样。

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/programming-life/lua/1987
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
lua系统学习08-Chunk与局部变量
关于上篇多重赋值,还发现一个特性 也算是函数的一个特性 函数的返回值支持返回多个。 可以使用多重赋值被多个变量接收。 如: function func() return 1……
<<上一篇
下一篇>>
文章目录
关闭
目 录