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] 虚拟机已停止运行

posted @ 2023-08-16 15:06  Bre-eZe  阅读(31)  评论(0)    收藏  举报