Lua学习分享
文章平均质量分 88
YzlCoder
未曾有过远大的梦想,只想用双手敲写明天
展开
-
Lua元表应用___数据检查
1. 前言在游戏项目中,Lua一般被广为使用在UI界面上,因为其轻巧,简便,支持热更新等特点。当然,有的游戏的单局中也使用了Lua。然而Lua语言的缺点也很明显,因为是弱类型语言,有的编码上的错误不容易被发现。例如变量名的错误拼写并不会带来编译的错误。比如游戏中有个配置文件,存放了各个数据模型的定义:DataModelDef = DataModelDef or{}DataModelDef.FubenConfigDataModel ={ FubenId = 0; Fuben原创 2020-06-20 22:38:09 · 660 阅读 · 0 评论 -
【Lua 5.3源码】虚拟机指令分析(三) 赋值指令
1. 赋值指令Lua中的赋值指令有如下几个:OP_MOVE A B R(A) := R(B)OP_LOADK A Bx R(A) := Kst(Bx)OP_LOADKX A R(A) := Kst(extra arg)OP_LOADBOOL A B C R(A) := (Bool)B; if (C) pc++OP_LOADNIL A B R(A), R(A+1), …, R(A+...原创 2019-12-21 22:10:26 · 1874 阅读 · 0 评论 -
【Lua 5.3源码】虚拟机指令分析(二)
1. Proto函数原型任何一个函数,一个 lua 文件, 经过编译之后都会对应变成Lua的一个LClosure(闭包)对象,一个闭包包含一个函数原型(Proto)和一个upvalues列表。typedef struct LClosure { ClosureHeader; struct Proto *p; UpVal *upvals[1]; /* list of upvalues...原创 2019-12-21 13:07:02 · 668 阅读 · 0 评论 -
【Lua 5.3源码】虚拟机指令分析(一)
1. Lua虚拟机简介Lua VM 使用的是 基于寄存器的虚拟机(Register-based)。 指令都是在已经分配好的寄存器中存取操作数。add a b c 将 寄存器 b 与 寄存器 c 中的值相加,结果存在 寄存器 a 中。 标准的三地址指令,每条指令的表达能力很强,并有效的减少了内存赋值操作。ADD C,A,B //将A,B寄存器里面的值相加后赋值给C寄存器除此之外还有一种虚...原创 2019-12-08 18:35:22 · 1147 阅读 · 0 评论 -
【Lua 5.3源码】table实现分析
1.table的特性在Lua中table是个非常重要的类型,通过使用table的一些特性可以实现许多数据结构,例如map,array queue,stack等。通过使用者角度来讲,table既可以当作array使用也可以当作map使用,那么对于设计者来讲,那么需要保证table的高效率的查找、插入、遍历。当然,table的设计者还提出了metatable(元表)的概念,以供使用者可以用来实...原创 2019-07-01 01:23:46 · 4685 阅读 · 5 评论 -
【Lua 5.3源码】Lua 新旧String 对比
一.在Lua5.1.4版本中TString的实现如下:typedef union TString { L_Umaxalign dummy; /* ensures maximum alignment for strings */ struct { CommonHeader; lu_byte reserved; unsigned int hash; size...原创 2019-07-07 22:03:09 · 1237 阅读 · 0 评论 -
lua学习(5)______table表和函数
今天我们所讲的table表和函数都是lua中最重要也是最核心的基础类型,包括后面许多lua的特性都是由这两个衍生出来的。所以这节大家需要仔细学习,把细节弄明白。首先是table表:如果大家学过其他编程语言,可能会知道数据结构这样一个概念。数据结构就是程序中相互之间存在一种或多种特定关系的数据元素的集合。恩这么说可能有点抽象,比如说C语言中的数组、结构体、链表各自就是一种数据原创 2016-09-06 15:34:30 · 4559 阅读 · 1 评论 -
lua学习(4)_____表达式、语句
前面讲完了lua的基本类型,现在我们来看看lua表达式和语句语法的特别之处。1.表达式:讲表达式肯定就要先从操作符入手,其他的语言一般操作符分为算术操作符、关系操作符、逻辑操作符。不过lua中还有一个字符串连接操作符。先从算术操作符讲起:lua支持常规的算术操作符有:一元的"-"(负号), 二元的 "+"(加号), "-"(减号), "*"(乘号), "原创 2016-09-05 02:51:32 · 1918 阅读 · 1 评论 -
lua学习(3)______lua中的基本类型
这章我们来了解lua中变量的基本类型。Lua中一共有8种基础类型:nil(空)、boolean(布尔)、number(数字)、string(字符串)、userdata(自定义类型)、function(函数)、thread(线程)和 table(表)。不过这篇暂时不对userdata和thread进行介绍,后面文章我们会详细介绍这两种类型的。首先看这段代码:原创 2016-09-01 22:36:20 · 4071 阅读 · 0 评论 -
lua学习(2)_____lua的注释和全局变量、局部变量
经过上节的介绍想必大家已经成功运行过lua代码了。下面我们真正的来接触lua基本语法了。1.注释语法Lua语言有自己独特的注释语法,同样分为行注释和块注释。行注释:和C语言很像,以--开头,那么这行之后的字符会被当做注释处理。(--等同于c语言的//)块注释:以--[[ 开头,以 ]] 结尾,在这之间的所有字符(可以跨多行)会被当做注释处原创 2016-08-31 21:03:13 · 10681 阅读 · 0 评论 -
lua学习(1)_____配置lua运行环境
Lua脚本的用途我就不多说了吧,都开始学Lua了一定知道它的用途首先我先介绍一下如何配置Lua脚本编译环境吧。1.可以去这里下载Lua的库: 链接: http://pan.baidu.com/s/1qXSfyQo 密码: 83eg下载好了之后解压到你喜欢的一个位置。比如我就放在了: E:\Yzl\ 这里。然后配置环境变量加上 [你的位置]\lua.原创 2016-08-30 23:04:41 · 1476 阅读 · 0 评论