lua基础语法
变量
交换变量
a=1
b=2
print(a,b)
a,b=2,1
print(a,b)
16进制
a=0x1A
print(a)#26
算数运算符
a=3
b=2
print(a+b)
print(a-b)
print(a*b)
print(a/b)
print(a%b)
print(a^b)
[06:41:08] 5
[06:41:08] 1
[06:41:08] 6
[06:41:08] 1.5
[06:41:08] 1
[06:41:08] 9.0
保证计算完后小数部分是0
a=10
b=3
c=(a-a%b)/b
print(c)
[06:43:13] 3.0
数组类型
a={1,"ac",{},function() end}
print(a[0])
print(a[1])
print(a[2])
print(a[3])
print(a[4])
print(a[5])
a[5]=10
print(a[5])
print(#a)
[10:42:13] 虚拟机初始化完毕
[10:42:13] nil
[10:42:13] 1
[10:42:13] ac
[10:42:13] table: 0x154
[10:42:13] function: 0x155
[10:42:13] nil
[10:42:13] 10
[10:42:13] 5
[10:42:13] 虚拟机已停止运行
命令
a={1,"ac",{},function() end}
table.insert(a,"d")--默认在最后插入
table.insert(a,5,"d")
local s=table.remove(a,2)
print(s)
字符串类型
a="abcdef"
b="hello\nworld"
c=[[
123\n
456\n
789\n
]]
print(a)
print(b)
print(c)
[14:33:46] 虚拟机初始化完毕
[14:33:46] abcdef
[14:33:46] hello
world
[14:33:46] 123\n
456\n
789\n
[14:33:46] 虚拟机已停止运行
链接
a="hello"
b="world"
c=a..b
print(c)
[14:35:14] 虚拟机初始化完毕
[14:35:14] helloworld
[14:35:14] 虚拟机已停止运行
转换
a=tostring(10)
b=tonumber("10")
print(a,b)
[14:37:01] 虚拟机初始化完毕
[14:37:01] 10 10
[14:37:01] 虚拟机已停止运行
查看长度
a="hello world"
print(#a)
[14:37:43] 虚拟机初始化完毕
[14:37:43] 11
[14:37:43] 虚拟机已停止运行
字符
s=string.char(48,49,50,51)
print(s)
d=string.char(0x30,0x31,0x32,0x33)
print(s)
k="abc"
print(string.byte(k,1))
[14:58:53] 虚拟机初始化完毕
[14:58:53] 0123
[14:58:53] 0123
[14:58:53] 97
[14:58:53] 虚拟机已停止运行
字典类型
a={
a=1,
b="123",
c=function()
end,
d=1234,
[",;"]=123
}
print(a["a"])
print(a.a)
print(a[",;"])
a["kk"]="love"
print(a["kk"])
[14:45:16] 虚拟机初始化完毕
[14:45:16] 1
[14:45:16] 1
[14:45:16] 123
[14:45:16] love
[14:45:16] 虚拟机已停止运行
全局变量
print(_G)
a=10
print(_G["a"])
print(_G["table"])
print(_G["table"]["insert"])
[14:48:08] 虚拟机初始化完毕
[14:48:08] table: 0x3
[14:48:08] 10
[14:48:08] table: 0x10
[14:48:08] function: 0x157
[14:48:08] 虚拟机已停止运行
nil类型
lua虚拟机会自动清理变量为nil的数据
凡是没生命过的变量都是nil
print(c)
[06:53:57] 虚拟机初始化完毕
[06:53:57] nil
[06:53:57] 虚拟机已停止运行
布尔运算
在逻辑运算中,只有nil,false代表假的含义,其他代表真
and or not 且具有短路效果
a=true
b=false
print(a and b,a or b)
c=a and b or c
print(c)
[06:53:13] 虚拟机初始化完毕
[06:53:13] false true
[06:53:13] nil
[06:53:13] 虚拟机已停止运行
关系运算符
>大于
<小于
>=大于等于
<=小于等于
==等于
~=不等于
条件判断
a,b=1,2
if a>b then
print(a)
else
print(b)
end
[06:58:21] 虚拟机初始化完毕
[06:58:21] 2
[06:58:21] 虚拟机已停止运行
复杂结构
if then
elseif then
elseif then
end
小试牛刀
if 0 then
print(123)
end
[07:02:29] 虚拟机初始化完毕
[07:02:29] 132
[07:02:29] 虚拟机已停止运行
注释
单行注释
--hello world
多行注释
--[[
123
456
789
]]
循环
for循环语法
for 变量=初始值,目标值,步长 do
代码块
end
实例
r=0
for i=1,100 do
r=r+i
end
print(r)
[07:07:32] 虚拟机初始化完毕
[07:07:32] 5050
[07:07:32] 虚拟机已停止运行
while循环语法
while 表达式 do
代码块
end
实例
r=0
n=1
while n<= 100 do
r=r+n
n=n+1
end
print(r)
[07:09:56] 虚拟机初始化完毕
[07:09:56] 5050
[07:09:56] 虚拟机已停止运行
repeat 循环语法,与while相似
repeat
代码块
until(表达式)
局部变量
do
local n=1
end
print(n)
do
k=2
end
print(k)
[07:16:11] 虚拟机初始化完毕
[07:16:11] nil
[07:16:11] 2
[07:16:11] 虚拟机已停止运行
函数
语法结构
a=function (参数)
代码块
end
function a (参数)
代码块
end
--上述等价
实例
sum=function(a,b,c)
print(a+b+c)
return 1,2
end
a=sum(1,2,3)
print(a)
[07:21:50] 虚拟机初始化完毕
[07:21:50] 6
[07:21:50] 1
[07:21:50] 虚拟机已停止运行
传参时,少写一个参数,会被赋值为nil,多写一个参数,会舍弃
实例
function an( x )
local r=0
for i=1,x do
r=r+i
end
return r
end
r=an(100)
print(r)
[07:26:08] 虚拟机初始化完毕
[07:26:08] 5050
[07:26:08] 虚拟机已停止运行

浙公网安备 33010602011771号