我是靠谱客的博主 多情蜗牛,最近开发中收集的这篇文章主要介绍【Lua 入门基础篇(二)】变量&循环一、变量二、赋值语句三、索引四、循环语句五、循环控制语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述
在这里插入图片描述

文章目录

  • 一、变量
  • 二、赋值语句
  • 三、索引
  • 四、循环语句
    • 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 入门基础篇(二)】变量&循环一、变量二、赋值语句三、索引四、循环语句五、循环控制语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部