Lua语言变量、函数、运算符、循环

发布于:2025-08-11 ⋅ 阅读:(14) ⋅ 点赞:(0)

变量

先声明,后使用。

三种类型:全局变量(默认),局部变量(作用范围:从声明开始,到所在的语句块结束),表中的 域

-- test var

a = 5;

local b = 5

function testInit()

c = 6;

local d = 7

end

testInit();

b = 9

do

c = 8

end

d = "u"

print(a,b,c,d)

变量赋值

a = 变量值。

a,b = 1,2

a = 1+2

常用:x , y = y, x a,b,c = 1,2

变量个数 > 值的个数:按照变量的个数 补足 nil。

a,b,c = 1,2,3,4

变量个数<值的个数:多余的值会被忽略。

a,b,c = 0

a = 0,b = nil, c=nil

多变量赋值:还可以用于函数的返回, 参数值互换。 a,b = func();

需要赋值给变量,如果能用局部变量,尽量用局部变量。

索引

对table中元素的访问。

tab["key"] tab.key

print("-----------索引--------------") tab = {key1 = "中国",key2 = "美国"} print(tab["key1"])

print(tab.key2)

循环

用途:做一些有规律的重复操作。

循环体 :一组被重复执行的语句。循环条件 :判断能否继续循环。

while循环

while(循环条件) do

业务代码;

对循环条件的控制; end

a = 1

while(a<5) do

print(a)

a = a+1 end

for循环

数值for循环:

for var=exp1,exp2,exp3 do 循环体

end

var的值,从exp1一直到exp2,步长是exp3(是可选的,默认是1)

print("----for----")

for i=1,10,2 do

print(i)

end

exp1,exp2,exp3 只在循环开始前计算一次。

泛型for循环:

是通过迭代器进行的。

a = {"one","two","three"}

for k,v in pairs(a) do print(v)

end

repeat until

repeat

循环体

until(条件)

先执行循环体,直到满足条件。如果条件为false,继续执行循环体,如果条件为true,则跳出循 环。

流程控制

if()

print("-----------if-------------") a = 1

if(a == 1) then

print(a.."是1")

end

0 是 true。

函数

函数定义

print()

功能:1。完成指定的任务。2。计算并返回值(可以返回多个值)。 函数的范围(local ,缺省)function 函数名称(参数列表)

函数体;

return 结果 end

定义一个函数:实现求两个数的最大值。

print("---------------函数定义:求最大值---------------") function testMax(num1,num2)

if (num1 > num2) then

result = num1; else

result = num2; end

return result; end

print("15,20中的最大值是:"..testMax(15,20))

函数可以作为参数进行传递。

例子:自定义打印函数。

print("---------------函数定义:自定义打印函数---------------")

myPrint = function(p)

print("重新的打印函数:",p) end;

myPrint("test");

function add(num1,num2,myPrintParam)

result = num1 + num2;

myPrintParam(result); end

add(2,3,myPrint)

多值返回

​
print("---------------多值返回---------------")

startIndex,endIndex = string.find("www.mashibing.com","ma") print(startIndex , endIndex)

例子:找出一个数组中,最大的值,以及它的索引。

print("---------------找出数组中,最大的值,以及索引---------------") function testMax(a)

local iIndex = 1;

local iValue = a[iIndex];

for i,v in pairs(a) do

if v > iValue then

iIndex = i;

iValue = v;

end

end

return '最大值的索引:'..iIndex  ,  '最大值是:'..iValue end

print(testMax({1,4,8,2,7,10,6,3}))

​

可变参数

运算符

算术运算符

+ 

- 

* 

/ 

% 取余 ^ 乘幂 - 负号

关系运算符

== 等于。

~=不等于

> 大于

< 小于

>= 大于等于 <= 小于等于

逻辑运算符

and or

not

其他运算符

.. 连接符

# 计算字符串或者 表 的长度。