![](https://img-blog.csdnimg.cn/7491ecb665bf40bfab16609b6effb978.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
lua 语言
文章平均质量分 88
学习一下该语言,艺多不压身
H-KING
学海无涯
展开
-
lua语言学习总结
Lua语言基本语法声明:文章大部分转载自,http://www.runoob.com/lua/lua-tutorial.html。转载原因:转载之后就不怕原网站关闭,文章丢失。二来可以在文章中记录自己的学习感受和疑惑1.Lua 语言简介https://blog.csdn.net/liujiayu2/article/details/818714902.Lua 环境安装http...原创 2018-08-17 15:37:31 · 11455 阅读 · 2 评论 -
使用VS2013编译Lua5.3.2
lua5.3.2的版本已经发布一段时间了,但是在windows平台下需要我们自己编译,本文介绍使用VS2013进行lua5.3.2源码的编译。Lua主要以下三部分组成:Lua链接库, Lua解释器和Lua编译器。 1. 下载Lua5.3.2 的源代码到Lua的官方网站上下载最新的Lua源代码http://www.lua.org,然后解压缩,里面主要由src和doc文件夹组成,其中源...转载 2018-08-15 15:26:23 · 330 阅读 · 0 评论 -
Lua的扩展库LuaSocket
LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP、UDP、DNS、FTP、HTTP、SMTP、MIME 等多种网络协议的访问操作。它由两部分组成:一部分是用 C 写的核心,提供对 TCP 和 UDP 传输层的访问支持。另外一部分是用 Lua 写的,负责应用功能的网络接口处理。一、安装LuaSocket下面介绍两种安装方法第一种方法:如果你有安装了 Lua ...转载 2018-08-21 09:45:44 · 2817 阅读 · 0 评论 -
用luac给lua脚本加密
项目要求对lua脚本进行加密,查了一下相关的资料 ,得知lua本身可以使用luac将脚本编译为字节码(bytecode)从而实现加密,试了一下,确实可行。下面是使用原生的lua解释器编译字节码:1、新建一个名为1.lua的文件,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件2、开始--运行--cmd3、luac -o out.lua 1.lua注:...转载 2018-08-22 11:15:16 · 40103 阅读 · 8 评论 -
Lua 数据类型
Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。数据类型 描述 nil 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 boolean...转载 2018-08-20 15:16:12 · 1037 阅读 · 1 评论 -
Lua 运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。Lua提供了以下几种运算符类型:算术运算符 关系运算符 逻辑运算符 其他运算符算术运算符下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20:操作符 描述 实例 + 加法 A + B 输出结果 30 - 减法 A - B 输出结果 -10 ...转载 2018-08-22 10:05:51 · 569 阅读 · 0 评论 -
Lua 元表(Metatable)
在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。当Lua试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫"__add"的字段,...转载 2018-08-23 10:45:42 · 745 阅读 · 0 评论 -
Lua 迭代器
迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址在Lua中迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素。泛型 for 迭代器泛型 for 在自己内部保存迭代函数,实际上它保存三个值:迭代函数、状态常量、控制变量。泛型 for 迭代器提供了集合的 key/value 对,语法格式如下:for...转载 2018-08-23 10:49:51 · 524 阅读 · 0 评论 -
Lua 协同程序(coroutine)
什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程...转载 2018-08-20 15:08:42 · 524 阅读 · 0 评论 -
Lua 数组
数组,就是相同数据类型的元素按一定顺序排列的集合,可以是一维数组和多维数组。Lua 数组的索引键值可以使用整数表示,数组的大小不是固定的。一维数组一维数组是最简单的数组,其逻辑结构是线性表。一维数组可以用for循环出数组中的元素,如下实例:array = {"Lua", "Tutorial"}for i= 0, 2 do print(array[i])end以上代...转载 2018-08-23 10:48:06 · 394 阅读 · 0 评论 -
Lua 环境安装
Linux 系统上安装Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装:curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gztar zxf lua-5.3.0.tar.gzcd lua-5.3.0make linux testmake install...转载 2018-08-20 15:10:55 · 1413 阅读 · 0 评论 -
Lua 元表(Metatable)
在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。因此 Lua 提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。例如,使用元表我们可以定义Lua如何计算两个table的相加操作a+b。当Lua试图对两个表进行相加时,先检查两者之一是否有元表,之后检查是否有一个叫"__add"的字段,...转载 2018-08-22 09:54:49 · 104 阅读 · 0 评论 -
Lua 垃圾回收
Lua 采用了自动内存管理。 这意味着你不用操心新创建的对象需要的内存如何分配出来, 也不用考虑在对象不再被使用后怎样释放它们所占用的内存。Lua 运行了一个垃圾收集器来收集所有死对象 (即在 Lua 中不可能再访问到的对象)来完成自动内存管理的工作。 Lua 中所有用到的内存,如:字符串、表、用户数据、函数、线程、 内部结构等,都服从自动管理。Lua 实现了一个增量标记-扫描收集器。 它...转载 2018-08-20 10:47:15 · 276 阅读 · 0 评论 -
Lua 循环
很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。Lua 语言提供了以下几种循环处理方式:循环类型 描述 while 循环 在条件为 ...转载 2018-08-22 09:58:51 · 571 阅读 · 0 评论 -
Lua 字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符。Lua 语言中字符串可以使用以下三种方式来表示:单引号间的一串字符。 双引号间的一串字符。 [[和]]间的一串字符。以上三种方式的字符串实例如下:string1 = "Lua"print("\"字符串 1 是\"",string1)string2 = 'runoob.com'print("字符串 2 是",s...转载 2018-08-22 10:07:38 · 839 阅读 · 0 评论 -
Lua 语言中的点、冒号与self
lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理。girl = {money = 200}function girl.goToMarket(girl ,someMoney) girl.money = girl.money - someMoneyendgirl.goToMarket(girl ,100)print(girl.money...转载 2018-08-23 14:54:27 · 468 阅读 · 0 评论 -
Lua 函数
在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。Lua 函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用; 2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。函数定义Lua 编程语...转载 2018-08-22 10:03:58 · 843 阅读 · 0 评论 -
Lua 变量
变量在使用前,必须在代码中进行声明,即创建该变量。编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。-- test.lua...转载 2018-08-22 09:57:31 · 590 阅读 · 0 评论 -
Lua 语言简介
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua 是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组于 1993 年开发的,该小组成员有:Roberto Ierusalimschy、Walde...转载 2018-08-20 15:10:12 · 2190 阅读 · 0 评论 -
Lua 文件 I/O
Lua I/O 库用于读取和处理文件。分为简单模式(和C一样)、完全模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法简单模式在做一些简单的文件操作时较为合适。但是在进行一些高级的文件操作的时候,简...转载 2018-08-20 14:29:58 · 400 阅读 · 0 评论 -
Lua 流程控制
Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。以下是典型的流程控制流程图:控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。要注意的是Lua中 0 为 true:--[ 0 为 true ]if(0)then prin...转载 2018-08-22 10:00:02 · 596 阅读 · 0 评论 -
Lua 数据库访问
本文主要为大家介绍 Lua 数据库的操作库:LuaSQL。他是开源的,支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。本文为大家介绍MySQL的数据库连接。LuaSQL 可以使用 LuaRocks 来安装可以根据需要安装你需要的数据库驱动。LuaRocks 安装方法:$ wget http://luarocks.org/...转载 2018-08-17 16:48:06 · 2178 阅读 · 0 评论 -
Lua 模块与包
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。以下为创建自定义模块 modu...转载 2018-08-23 10:53:30 · 481 阅读 · 0 评论 -
Lua 模块与包
模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行。以下为创建自定义模块 modu...转载 2018-08-21 10:35:48 · 120 阅读 · 0 评论 -
Lua 面向对象
面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构。以下几种编程语言都支持面向对象编程: C++ Java Objective-C Smalltalk C# Ruby面向对象特征1) 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。 2) 继承:继承的方法允许在不改动原程序的基础上对其进行...转载 2018-08-21 10:41:08 · 381 阅读 · 0 评论 -
Lua 基本语法
Lua 学习起来非常简单,我们可以创建第一个 Lua 程序!第一个 Lua 程序交互式编程Lua 提供了交互式编程模式。我们可以在命令行中输入程序并立即查看效果。Lua 交互式编程模式可以通过命令 lua -i 或 lua 来启用:$ lua -i $ Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio> 在命...转载 2018-08-20 15:12:28 · 1456 阅读 · 1 评论 -
Lua中使用Sleep函数
Lua中没有内置的Sleep函数,有4种方法可以实现Sleep函数功能,如下:方法1 在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用.function Sleep(n) local t0 = os.clock() while os.clock() - t0 <= n do endend方法2 调用系统的Sleep函数...转载 2018-08-20 14:53:01 · 19014 阅读 · 0 评论 -
Lua和C++交互详细总结
一、Lua堆栈要理解Lua和C++交互,首先要理解Lua堆栈。简单来说,Lua和C/C++语言通信的主要方法是一个无处不在的虚拟栈。栈的特点是先进后出。在Lua中,Lua堆栈就是一个struct,堆栈索引的方式可是是正数也可以是负数,区别是:正数索引1永远表示栈底,负数索引-1永远表示栈顶。如图: lua的栈类似于以下的定义, 它是在创建lua_State的时候创建的: ...转载 2018-08-15 16:40:25 · 5156 阅读 · 5 评论 -
Lua的upvalue和闭包
本站文章均为Jensen抹茶喵原创,转载务必在明显处注明:转载自【博客园】 原文链接:http://www.cnblogs.com/JensenCat/p/5112420.html1.什么是闭包支持闭包特性通常需要一个嵌套函数,通过执行嵌套函数来改变所在父函数的局部变量状态,父函数保存调用上下文状态,而嵌套函数负责修改状态的改变.(简单来说就是得支持函数嵌套)下面就是一个Lua闭包:...转载 2018-08-23 14:19:11 · 1014 阅读 · 1 评论 -
Lua 和 C 交互中虚拟栈的操作和遍历
int lua_pcall(lua_State *L, int nargs, int nresults, int msgh) * 以保护模式调用具有"nargs"个参数,"nresults"个返回值得函数。函数在第一个参数的前一个位置。 * 保护模式指的是当调用出错时不会报错,而是返回一个错误码同时将错误信息入栈。 * 当调用成功时,函数返回0。将函数名以及参数出栈,之后将函数的返回值入栈。...转载 2018-08-17 10:03:15 · 690 阅读 · 0 评论 -
Lua 调试(Debug)
Lua 提供了 debug 库用于提供创建我们自定义调试器的功能。Lua 本身并未有内置的调试器,但很多开发者共享了他们的 Lua 调试器代码。Lua 中 debug 库包含以下函数:序号 方法 & 用途 1. debug(): 进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计...转载 2018-08-20 09:59:17 · 1544 阅读 · 0 评论 -
Lua 错误处理
程序运行中错误处理是必要的,在我们进行文件操作,数据转移及web service 调用过程中都会出现不可预期的错误。如果不注重错误信息的处理,就会造成信息泄露,程序无法运行等情况。任何程序语言中,都需要错误处理。错误类型有:语法错误 运行错误语法错误语法错误通常是由于对程序的组件(如运算符、表达式)使用不当引起的。一个简单的实例如下:-- test.lua 文件a == 2...转载 2018-08-20 10:25:40 · 680 阅读 · 0 评论 -
Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。Lua table 是不固定大小的,你可以根据自己需要进行扩容。Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。 例如string.format表示使用"...转载 2018-08-23 10:51:59 · 499 阅读 · 0 评论