使用环境
使用官方的浏览器测试网站进行代码测试。wiki.loatos.com
变量
创建变量
类似python,直接赋值即生成全局变量;
加关键字 local 变成 仅本文件使用变量;
数据类型
nul和number
未被声明(或叫创建)的值都是 nul,类似NULL。
number 数值型,支持16进制表示法和科学计数法。
字符串
单引号或者双引号括起表示字符串。
a = "asdf"
b = 'qwer'
支持转义字符。
使用两个方括号进行换行,但是括号里的转义字符不会进行转义处理。
c = [[
123
12345
12345/n1
12
]]
print(c)
->123
12345
12345/n1
12
用两个点 … 作为连接符进行连接:
a = 'qwe'
b = 'asd'
c = a..b
print(c)
->qweasd
数字与字符串互相转换:
tonumber(),转换失败返回 nul
tostring()
c = tostring(10)
d = tonumber("abc")
lua字符串可以存放任何东西,类似字符串数组。
常用lua字符串存储二进制流,因为字符串的值一般不容易丢失和更改。
s = string.char(0x30,0x31,0x32,0x33)--ASCII码转字符串
n = string.byte(s,2)--提取某一位的值
print(n)
print(n)
->0123
49
获取字符串长度:
a = 'qwerf'
print(#a)
->5
多重赋值
a,b = 1,2
print(a,b)
->1 2
a,b,c = 0x11,2e3
print(a,b,c)
->17 2000 nul
运算符
加减乘除、乘幂、左移右移
函数
函数定义
function function_name( ... )
-- body
end
function_name = function( ... )
-- body
end
函数默认返回值是 nul。
函数使用
调用和C一样,返回值也可以用return来返回。
多个返回值可以配合多重赋值使用。
local i,j = f(a,b)
table 下标
数字下标
a = {1,'q',{123},function() end}
a[5] = 123
print(a[1])
print(#a)
->1
5
类似数组,不过里面什么都能存。
提取与其他语言不同,第一位是1。
(其他语言一般第一位是0)
通过lua自带接口对table进行操作:
table.insert(a,2,'d')
print(a[2])
print(#a)
->d 6
local x = table.remove(a,2)
print(a[2])
print(x)
->p
d
字符串下标
a = {
a = 1,
b = 'q',
c = {},
d = function() end,
e = 123
[":;"] = 1122
}
print(a["a"])
print(a.b)
print(a[":;"])
->1
q
1122
注意:字符串下标的提取需要用双引号括起下标(代码中的方法一)。
方法二的前提是该下标符合变量命名规范。
方法三,如果不符合命名规范,也是可以用方法一来,但是在定义的时候就需要用 框+双引号 来定义。
a["abc"] = "qwert"
print(a["abc"])
->qwert
全局下标 _G
所有的全局变量都在 _G 中。
a = 1
print(_G["a"])
-> 1
多重调用
print(_G["table"]["insert"])
-> function:0xc1
真假
a = true
b = false
print(1<2)
print(1>2)
print(1==2)
print(1<=2)
print(1>=2)
print(1~=2)
print(a and b)
print(a or b)
print(not b)
->true
false
false
true
false
true
false
true
true
输入 <=,会自动变成符号 ≤。
不等于是 ~=,与C的 != 不同。
a = nil --假
b = 0 --真
print(a and b)
print(a or b)
print(not b)
->nil
0
false
注意,lua中只有false和nil代表假,其他都是真,0也是真。
and 和 or 会返回原值,只有 not 一定返回true 或 false。
b = 9
print(b>10 and "yes" or "no")
-> no
判断语句
if 1>10 then
print("1>18")
elseif 1<10 then
print("1<10")
else
print("no")
end
-> 1<10
用 then 和 end 表示代码块。
if 0 then
print("0 is true!")
else
print("0 is false!")
end
-> 0 is true!
可以用 if语句验证 0 是代表 true 的。
循环
for 循环
for i=1,10,2 do
print(i)
end
->1
3
5
7
9
lua不支持在循环中更改 i 的值,这里跟C是不一样的。
for i=10,1,-1 do
print(i)
if i==5 then break end
end
->10
9
8
7
6
5
支持 break 操作。
while 循环
loca1 n = 5
while n>1 do
if n==3 then break end
print(n)
n=n-1
end
->
5
4
lua不支持n --
和n -= 1
。文章来源:https://www.toymoban.com/news/detail-742619.html
参考资料
1、B站视频:每日喝粥-Lua快速入门教程。
2、lua官网手册:推荐学习路线文档。文章来源地址https://www.toymoban.com/news/detail-742619.html
到了这里,关于lua语法学习笔记(速成版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!