lua语法学习笔记(速成版)

使用环境

使用官方的浏览器测试网站进行代码测试。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


参考资料

1、B站视频:每日喝粥-Lua快速入门教程
2、lua官网手册:推荐学习路线文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moqim Flourite.

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值