概述
文章目录
- 一、变量
- 二、赋值语句
- 三、索引
- 四、循环语句
- 1. while
- 2.for
- 3.repeat…until
- 4.循环嵌套
- 五、循环控制语句
- 1.break
- 2.goto
- 实现 continue
一、变量
-
变量在使用前,需要在代码中进行声明,即创建该变量。
-
编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。
-
Lua 变量有三种类型:全局变量、局部变量、表中的域。
-
Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量。
-
局部变量的作用域为从声明位置开始到所在语句块结束。
-
变量的默认值均为 nil。
#!/usr/local/bin/lua
a = 1 -- 全局变量
local b = 2 -- 局部变量
function fun()
c = 3 -- 全局变量
local d = 4 -- 局部变量
end
fun()
print(c, d) -- 3 nil
do
local a = 5 -- 局部变量
b = 6 -- 对局部变量重新赋值
print(a, b) -- 5 6
end
print(a, b) -- 1 6
二、赋值语句
赋值是改变一个变量的值和改变表域的最基本的方法。
Lua 可以对多个变量同时赋值。
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
- 变量个数 > 值的个数 按变量个数补足nil
- 变量个数 < 值的个数 多余的值会被忽略
#!/usr/local/bin/lua
a = 1
b = "ABC"
print(a, b) -- 1 ABC
a = a + 1
b = "A" .. "BCD"
print(a, b) -- 2 ABCD
c, d = 1, "2" .. "3"
print(c, d) -- 1 23
a, b = 1, 2, 3
print(a, b) -- 1 2
a, b, c = "A", "B"
print(a, b, c) -- A B nil
应该尽可能的使用局部变量,有两个好处:
- 避免命名冲突。
- 访问局部变量的速度比全局变量更快。
三、索引
对 table 的索引:[]
、 .
t[i]
t.i -- 当索引为字符串类型时的一种简化写法
gettable_event(t,i) -- 采用索引访问本质上是一个类似这样的函数调用
四、循环语句
Lua 语言提供了以下几种循环处理方式:
1. while
i = 10
while(i >= 1)
do
print(i)
i = i - 1
end
2.for
Lua 编程语言中 for语句有两大类:
-
数值for循环
-
泛型for循环
1. 数值for循环
for var = exp1, exp2, exp3 do
<执行体>
end
var 从 exp1 变化到 exp2,每次变化步长为 exp3(默认1)。
function fun(x)
return x - 1
end
x = 3
for i = 1, fun(x) do print(i)
for的三个表达式在循环开始前一次性求值,以后不再进行求值。
2. 泛型for循环
泛型 for 循环通过一个迭代器函数来遍历所有值。
a = {1, 2, 3}
for i, v in ipairs(a) do print(i, v) end
3.repeat…until
repeat…until 循环的条件语句在当前循环结束后判断。 (do-while)
x = 3
repeat
print(x)
x = x - 1
until(x == 0)
4.循环嵌套
三种循环都可以相互嵌套
五、循环控制语句
Lua 支持以下循环控制语句:
1.break
x = 3
repeat
print(x)
x = x - 1
if (x == 1) then break end
until(x == 0)
运行结果:
3
2
2.goto
Label: ::Label::
local a = 1
::label:: print("--- goto label ---")
a = a + 1
if a < 3 then
goto label -- a 小于 3 的时候跳转到标签 label
end
实现 continue
方法一,在循环的内部再嵌入一层循环:
table = {1, 2, 3, 4, 5}
for i = 1, #table do
while true do -- 内层循环
if table[i] % 2 == 0 then
break
end
print(table[i])
break -- 正常逻辑也需要break,否则会进入死循环
end
end
方法二,使用goto语句:
table = {1, 2, 3, 4, 5}
for i = 1, #table do
if table[i] % 2 == 0 then
goto continue
end
print(table[i])
::continue::
end
方法三,使用repeat语句:
table = {1, 2, 3, 4, 5}
for i = 1, #table do
repeat
if table[i] % 2 == 0 then
break
end
print(table[i])
until true
end
最后
以上就是多情蜗牛为你收集整理的【Lua 入门基础篇(二)】变量&循环一、变量二、赋值语句三、索引四、循环语句五、循环控制语句的全部内容,希望文章能够帮你解决【Lua 入门基础篇(二)】变量&循环一、变量二、赋值语句三、索引四、循环语句五、循环控制语句所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复