LUA - 技术教程文章

Lua学习笔记之数据类型【代码】

从本篇博客开始研究一下Lua,现在的Lua真得是很火,因为Cocos2d-x写游戏的时候会用到,所以就拿过来学学吧,先从基础的语法开始,然后慢慢的深入。本人也是刚刚学习,希望和学习Lua的大家交流,博客权当笔记,有错误之处还请赐教。当然首先是开发环境了,我的学习背景是Cocos2d-x,所以下载了最近发布的Cocos Code IDE版本,我们可以在Cocos Code IDE上边新建工程,然后写Lua测试代码,关于Cocos Code IDE的使用官方有不少的教程,...

热更新脚本C#light,ulua,Scorpio性能比较

http://www.unity蛮牛.com/thread-32861-1-1.html测试环境: unity4.5.2 三个脚本全是源码导入 PC :处理器 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3.60GHz 内存: 8.00GB 系统 : Windows 7 64位先贴下源码:(注:cls的作者说 cls脚本作用域判断比较厉害 所以利用脚本里面的for循环 可能有点损耗cls的测试结果 更多测试结果请下载源码自行测试) Stopwatch watch = null; { watch =...

Lua1.0 代码分析 table.c【代码】

table.c 代码分析全局符号,常量,字符串,关联数组,文件列表的定义。全局符号:初始有 5 个基本的符号,Lua 预设的函数和库函数都注册在里面。常量:初始的几个常量是 Lua 中 type 的名字。字符串表,关联数组表,文件列表 所有的这些在 table.c 中定义的这些数组可以认为是 Lua 的全局注册表空间,Lua 的环境。函数分析/* ** Given a name, search it at symbol table and return its index. If not ** found, allocate at end ...

Lua之协同程序(coroutine)【代码】【图】

什么是协同(coroutine)?Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其它大部分东西。协同是非常强大的功能,但是用起来也很复杂。线程和协同程序区别线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作的运行。在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确...

lua中的逻辑运算符

逻辑运算符也是3个,and,or,not,只是不是返回false和true,只有false和nil表示假,其他的都是真andand使用短路运算,a and b,如果a为假,结果已经定了,返回a假,否则返回b,返回的也代表结果 oror也使用短路运算,a or b,如果a为真,返回b,不计算b,否则返回b 运用:x=x or v,if not x then x =v(a and b) or c,如果b是真的话,等于a?b:cmax=(x>y) and x or y,取x和y中的较大者. 原文:http://www.cnblogs.com/ptqueen/p/6759795.html

Windows Server 2012 standard Evaluation 激活【图】

Server2012试用版不像其他的傻瓜式的流程激活;从测试版 到正式版的 指令:650) this.width=650;" src="/upload/getfiles/default/2022/11/16/20221116014452726.jpg" title="1.jpg" />650) this.width=650;" src="/upload/getfiles/default/2022/11/16/20221116014453034.jpg" title="2.jpg" />原文:http://51log.blog.51cto.com/6076767/1362017

leetcode——Evaluate Reverse Polish Notation 求算式值(AC)【代码】

Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /.Each operand may be an integer or another expression. Some examples: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6class Solution { public:int evalRPN(vector<string> &tokens) {stack<int> myStack;int first,second,merge;for(int i=0; i<tokens.siz...

【cocos2d-x3.2游戏开发】 lua 类, 继承, 面向对象

1.lua中的类 lua中其实是没有类的,有的只是表(table),而类之间的继承也就是将父类的表连到了一起,派生类中没有找到的属性和方法就通过元表查找父类2.lua中类的属性 classA = {width =10, height=10} classA={} classA.width=10 classA.height=10 两种方法都可以,通过点self.width统一调用3.类方法function Box:collsion()-- 默认第一个参数隐藏传递self,可以通过self.xxx 调用属性和方法 endfunction Box.creat...

lua-设计与实现-表【代码】【图】

typedef struct Table {CommonHeader;//表示这个表中提供了哪些元方法 最开始这个flags 的,也就是 ,当查找一次之后,如果该表中存在某个元方法lu_byte flags; /* 1<<p means tagmethod(p) is not present */ lu_byte lsizenode; /* log2 of size of `node‘ array *///散列桶数组的大小的 log2(size)struct Table *metatable;TValue *array; /* array part */Node *node; //散列桶数组起始位置的指针Node *lastfree; /* any ...

Lua和C++交互 学习记录之五:全局数组交互【代码】

主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍)部分内容查阅自:《Lua 5.3 参考手册》中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 1.数组①数组是key值从1开始并连续递增的table。②索引号是从1开始,不是从0开始。 2.既然是table,那当然是可以用上一节的内容进行读写的。lua还提供了一些只针对数组进行操作的API,如下:①LUALIB_API lua_Integer (luaL_len) (lua_State *L, int idx);使用于数组,可得...

2016-11-26(初学lua-了解篇)

---------------------------------------------闭包------------------------------------------------------一个函数内 返回另一个函数作用是函数A在调用结束之后不会被垃圾回收机制回收暂时 可以理解为 因为A返回了B 外面对 A里面的B进行引用 而 B依赖A存在闭包实现方式 函数A return 直接定义函数B ------------------------------------------------------可以一条语句上赋很多值-------------------------------------------...

lua函数精讲(一)

函数的用途:1.完成指定的任务,这种情况下作为调用语句使用。2.计算并返回值,这种情况下,函数作为赋值语句的表达式使用。函数的参数为空,必须使用()表示函数调用。例外:当函数只有一个参数,并且这个参数是字符串或表构造时,()是可选的。lua提供了面向对象调用函数的语法o:foo(x)与o.f(o,x)是等价的。lua函数的实参与形参的匹配与赋值语句类似,多余部分被忽略,缺少部分nil补足。lua函数可以返回多个值,return后列出要返回...

c++调用lua【代码】【图】

我们主要解决如下几个问题:转:http://www.cnblogs.com/zisou/p/cocos2dx-lua2.html1,C++如何获取Lua里面的一个变量值?2,C++如何获取Lua里面一个Table(Lua利用Table实现面向对象,那就能调用Lua里面的比较高级的引用方法)3,C++如何访问Lua里面的一个方法?4,C++如何访问Lua里面的一个带参数的方法?5,C++如何访问Lua里面的一个带参数的方法并且带返回值?如果以上问题都解决了,基本能满足我们游戏开发中遇到的数据通信的...

debian上安装lua编辑器

Debian服务器上安装lua1)下载压缩包 wget http://www.lua.org/ftp/lua-5.1.4.tar.gz2)解压文件 tar zxvf lua-5.1.4.tar.gz3)安装文件 cd lua-5.1.4 make linux 这时遇到错误: “luaconf.h:276:30: fatal error: readline/history.h: 没有那个文件或目录 #include <readline/history.h>”,解决方法:注释掉不可以,百度一下,得到需要安装readline下载readline-6.3.tar.gzwget http://ftp.gnu.org/gnu/readline/r...

lua中夏令时区的问题解决

游戏中会遇到时区的问题比如北京时间晚上8点开启一个活动,此时此刻在世界各地都应该可以参加这个时候我们计算时间应该按照服务器的时间计算。所以一般做法是服务器发给客户端一个server_timestamp ,时间戳的意思是从1970年1月1日零时到现在的时间总秒数在lua中我们会转化成日期,比如: local date = os.date("*t",server_timestamp)这样算正常来说没什么问题但是很多国家地区采用了夏令时计时,北京时区是非夏令时区导致了os.da...

在OpenResty中使用lua-zlib的方法【代码】【图】

==================================================================1、查看 zlib在centos 中是否存在?rpm -qa | grep zlib显示:zlib-devel-1.2.3-29.el6.x86_64zlib-1.2.3-29.el6.x86_64表示已安装,不用过多担心 。====================================================================2、安装cmake编译器yum install -y gcc gcc-c++ make automake wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gztar -zxvf ...

eclipse安装lua【图】

单击Eclipse->Help->Install New Software…在Work with中输入网址Kepler - http://download.eclipse.org/releases/kepler 在Programming Languages中选择Lua Development Tools,点击finish 原文:http://www.cnblogs.com/chy123/p/6928883.html

Lua面向对象之类和继承

终于来了,在Lua中的面向对象编程,相信目前学习Lua的大部分人都是为了开发手机网游吧。而且基本都是奔着脚本语言的热更新特性去的,所以全脚本开发变得十分流行。 对于普及不太广的Lua(相对于C++、Java等主流语言),需要短时间上手开发游戏,对新手而言不算简单。所以大家才更习惯于继续用面向对象思想去折腾Lua吧~好了,不唠叨了,我最不喜欢唠叨了。(小若:是是是,你一点都不唠叨,赶紧开讲!)1.类的对象至于如何创建一个类...

Lua教程(七):数据结构详解

Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础。如数组、记录、线性表、队列和集合等,在Lua中都可以通过table来表示。 1. 数组:使用整数来索引table即可在Lua中实现数组。因此,Lua中的数组没有固定的大小,如:复制代码 代码如下: a = {} for i = 1, 1000 do a[i] = 0 end print("The length of array ‘a‘ is " .. #a) --The length of array ‘a‘ is 1000 在Lua中,可以让任何数作...

像调试java一样来调试Redis lua【代码】【图】

高并发的系统中,redis的使用是非常频繁的,而lua脚本则更是锦上添花。因为lua脚本本身执行的时候是一个事务性的操作,不会掺杂其他外部的命令,所以很多关键的系统节点都会用redis+lua来实现一致性的操作请求。但是在实际开发过程中,由于redis lua脚本调试难的问题,导致大量的时间耗费在了这上面。如果有什么方案能够让我们像利用IDEA调试java一样简便去调试redis lua脚本,那该是很幸福的事儿了。通过不断的寻找,终于也找到了...

《lua设计与实现》第6章 指令的解析与执行--6.4 函数相关的操作指令【代码】

在下面的示例中,(3)的prev成员(2),(2)的prev成员(1),(1)的prev成为NULL。g = 10-- (1) 全局环境的 FuncState: 其 prev 为 NULLfunction fun () -- (2) fun 的 FuncState: 其 prev 指向(1)local a = 2function test() -- (3) test 的 FuncState: 其 prev 指向(2)local b = 1-- g -> test -> fun -> 全局环境 -> VGLOBAL-- b -> test ->VLOCAL-- a -> test -> fun -> VUPVALprint(a,b,g)endtest() end fun() Lua解释器在解...

Lua应用——tables应用,查找是否为保留字【代码】

Lua中的table功能确实强大。因为table是Lua中的唯一数据结构。今天有点晕,少说两句多拷贝代码吧。实例:  假定你想列出在一段源代码中出现的所有标示符,某种程度上,你需要过滤掉那些语言本身的保留字。一些C程序员喜欢用一个字符串数组来表示,将所有的保留字放在数组中,对每一个标示符到这个数组中查找看是否为保留字,有时候为了提高查询效率,对数组存储的时候使用二分查找或者hash算法。  Lua中表示这个集合有一个简单...

转 Lua标准库: table函数, 数学函数, 字符串函数/格式化/配对, WoW新增函数, 函数别名

这里只介绍和插件编写比较有关的几个函数. 详细的Lua手册请参照Lua Reference Manual 5.1.assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息 collectgarbage() - 垃圾收集器. (新增于1.10.1) date(format, time) - 返回当前用户机器上的时间. error("error message",level) - 发生错误时,输出一条定义的错误信息.使用pcall() (见下面)捕捉错误. gcinfo() - 返回使用中插...

cocos2d-x-LuaProxy学习日志(9) -- 移植android(cocos2d-x 2.1.4)【图】

移植android1.搭配移植环境 mac平台: http://blog.csdn.net/rexuefengye/article/details/15813497 windows平台: http://blog.csdn.net/rexuefengye/article/details/123760372.移植项目文件、资源 1)把Classes 和 Resources 文件拷贝到我们 create 出来的项目 cocosbuilder文件夹中,如图: 注:因本人在xcode进行开发,资源目录略有不同,不过,可以把需要的资源统一放在create项目的Resources文件中,如图:3.修改...

Lua_第17 章 数学库

第17 章 数学库 在这一章中(下面关于标准库的几章中同样)我的主要目的不是对每一个函数给出完整地说明,而是告诉你标准库能够提供什么功能。为了能够清楚地说明问题,我可能 会忽略一些小的选项或者行为。主要的思想是激发你的好奇心,这些好奇之处可能在参考于册中找到答案。 数学库由算术函数的标准集合组成,比如三角函数库(sin, cos, tan, asin, acos, etc.), 幂指函数(exp, log, log10),舍入函数(floor, ...

Lua的面向对象,封装,继承,多态【代码】【图】

概述  我们总所周知对象是由属性和方法组成的,要用lua要描述一个对象,也必然要有这两个特性,属性和方法。lua的基本结构是table,所以Lua的类,其实都是table,因为它可以存储普通的变量又可以存储方法,我们利用table就可以描述一个对象的属性和方法。对象其实lua要模拟一个对象,关键就在于__index设置元表索引这块,它主要起到索引失败后该怎么办,如果它指向一张表,那么__index索引失败后,它会到这张表中去查找有没有你指...

Ulua_toLua_基本案例(八)_LuaAccessingArray

Ulua_toLua_基本案例(八)_LuaAccessingArrayusing UnityEngine; using LuaInterface;public class AccessingArray : MonoBehaviour {private string script =@"function TestArray(strs)local len = strs.Lengthfor i = 0, len - 1 doprint(strs[i])endreturn 1, '123', trueend ";void Start(){LuaState lua = new LuaState();lua.Start();lua.DoString(script);string[] strs = { "aaa", "bbb", "ccc" };LuaFunctio...

lua正则表达式【图】

lua中的正则表达式,规则如图:常用示例,代码如下:-- 去掉首尾所有空格 function trim(s)return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end local s = " space " local txt = trim(s) print(string.len(s), string.len(txt)) 输出: 7 5-- 查找固定开头和结尾的字符串 local s = "<url>http://xulidong.sinaapp.com/</url>" local sTag = '<url>' local eTag = '</url>' local _ , _ , txt = string.find(s,sTag.."(.-)"..eTag...

LUA require 搜索路径指定方法【代码】

如果是一个 *.LUA 的文件, 里面用到了自己写的库, 或者第三方写的库, 但是你不想把它放到 lua 的安装目录里, 则在代码里面可以指定require搜索的路径。package.path = ‘/usr/local/share/lua/5.1/?.lua;/home/resty/?.lua;‘ --搜索lua模块package.cpath = ‘/usr/local/lib/lua/5.1/?.so;‘ --搜索so模块如果是要在 nginx.conf 文件中引用第三方的库,则需要在 http 段中添加下面的代码lua_package_path ‘/usr/lo...

第一个Cocos2d-x Lua游戏【图】

第一个Cocos2d-x Lua游戏我们的编写的第一个Cocos2d-x Lua程序,命名为HelloLua,从该工程开始学习其它的内容。创建工程我们创建Cocos2d-x Lua工程可以通过Cocos2d-x提供的命令工具cocos实现,但这种方式不能与Cocos Code IDE集成开发工具很好地集成,不便于程序编写和调试。由于Cocos Code IDE工具是Cocos2d-x开发的专门为Cocos2d-JS和Cocos2d-x Lua开发设计的,因此使用Cocos Code IDE工具很方便创建Cocos2d-x Lua工程。首先我们...