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

这篇具有很好参考价值的文章主要介绍了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官网手册:推荐学习路线文档。文章来源地址https://www.toymoban.com/news/detail-742619.html

到了这里,关于lua语法学习笔记(速成版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Lua学习笔记】Lua进阶——Table(3) 元表

    接上文 Q:为什么要使用元表? A:在Lua中,常常会需要表与表之间的操作。元表中提供了一些元方法,通过自定义元方法可以实现想要的功能,相当于面向对象中给你一系列方法让你重载。 使用下列代码设置元表: 通常在元表中操作分为三步: 操作子表 检测是否有元表 若

    2024年02月15日
    浏览(35)
  • 【Lua学习笔记】Lua进阶——Table,迭代器

    在【Lua学习笔记】Lua入门中我们讲到了Lua的一些入门知识点,本文将补充Lua的一些进阶知识 在上篇文章的最后,我们指出通过查询_G的字符索引,发现table.insert实际上是一个名为table的table结构里的索引指向的函数 实际上不仅它,所有的函数,模块,全局变量,元表 😅😅😅

    2024年02月15日
    浏览(35)
  • 【Lua学习笔记】Lua进阶——Require,三目运算

    这是文件 aaa.lua 的内容 这是文件 example.lua 的内容 可以看到,在使用require之后,会直接对其他文件进行调用执行。而且我们可以直接访问它的全局变量,并且发现我们的全局变量被覆盖了,而它的局部变量就像private一样,不能被这个文件访问。 从 package.loaded 这个方法我们可

    2024年02月15日
    浏览(47)
  • lua学习笔记21完结篇(lua中的垃圾回收)

    输出 学习地址  【唐老狮】Unity热更新之Lua语法_哔哩哔哩_bilibili 

    2024年04月15日
    浏览(44)
  • 【Lua学习笔记】Lua进阶——Table(4)继承,封装,多态

    现在我们可以像面向对象一样,new一个对应基类的对象了。但是这里的new也不完全相似与面向对象的new,例如我们可以这样做: 我们在封装Object类的时候可完全没有name这个索引,而在Lua中我们new了一个新对象,还能新加入一些变量和方法,这些特性明显是继承了父类的子类才

    2024年02月15日
    浏览(48)
  • lua学习笔记

    单行注释: 多行注释: 命名: Lua不支持下划线+大写字母,比如:_ABC 但支持:_abc : 全局变量: 直接变量名 = 内容就是全局 局部变量: 加上local即可 nil: nil是空的意思,即什么也没有 lua的数据类型: table: lua从下表为1开始的 if else elseif: nil默认为false ..: ..为字

    2024年02月07日
    浏览(41)
  • Lua学习笔记:require非.lua拓展名的文件

    前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对 Lua 语法有简单认知 对 C++ 语法有简单认知 依赖 Visual Studio 工具 本篇的特色 具有全流程的 图文教学 重实践,轻理论,快速上手 提供全流程的 源码 内容 ★提高阅读体验★ 👉 ♣ 三级标题 👈 👉 ♦ 四级标题 👈 想

    2024年02月07日
    浏览(40)
  • lua脚本语言学习笔记

    Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 因为我们使用redis的时候一般要写lua脚本,这篇文章就介绍一下lua脚本语言的基础用法。 window操作系统下可以使用SciTE来

    2024年02月16日
    浏览(48)
  • Lua学习笔记:面向对象的实现

    前言 本篇在讲什么 Lua中的面向对象的实现 本篇适合什么 适合 初学Lua 的小白 本篇需要什么 对 Lua 语法有简单认知 依赖 Sublime Text 编辑器 本篇的特色 具有全流程的 图文教学 重实践,轻理论,快速上手 提供全流程的 源码 内容 ★提高阅读体验★ 👉 ♣ 三级标题 👈 👉 ♦

    2024年02月13日
    浏览(47)
  • 【速成MSP430f149】电赛期间学习MSP430f149笔记

    由于本人加入实验室较晚,起步较迟,目前接触单片机不到10个月,接触过arduino,stc15单片机,熟悉51单片机,STM32单片机,由于上届省电赛采用TI芯片,然后大胆的推测这次不会用TI的MCU,可往往天意弄人,这次承继了上次国赛的两个小车通信要求,但是可以不加视觉,难度均

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包