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

给TA打赏
共{{data.count}}人
人已打赏
开发

C++基础入门 – 值传递与引用参数|指针与函数

2023-9-15 11:34:51

开发

C++语言关键字

2023-9-15 11:42:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索