Lua class】的更多相关文章

前面一篇文章中介绍了lua给下面代码生成最终的字节码的整个过程,这次我们来看看lua vm执行这些字节码的过程. foo = "bar" local a, b = "a", "b" foo = a 生成的字节码如下所示: 之前lua是在luaY_parser函数(入口)中完成了lua脚本的解析生成字节码的整个过程的,在生成了main func(过程见“lua解析赋值类型代码的过程“)后luaY_parser会返回一个Proto结构体指针tf,Pr…
一.lua函数赋值与函数调用         在lua中函数名也是作为一种变量出现的,即函数和所有其他值一样都是匿名的,当要使用某个函数时,需要将该函数赋值给一个变量,这样在函数块的其他地方就可以通过这个变量来调用这个函数. foo = * end; --标准用法,函数赋值 * x end; --常见用法,等价于上面 如果函数只是作为另外函数的参数或者子函数块时,即不涉及到外部调用时,不需要赋值(命名),可以直接使用 network = { {name = "lilei", ip =…
在redis的官网上洋洋洒洒的大概提供了200多个命令,貌似看起来很多,但是这些都是别人预先给你定义好的,但你却不能按照自己的意图进行定制, 所以是不是感觉自己还是有一种被束缚的感觉,有这个感觉就对了... 一:Lua脚本 说来也巧,redis的大老板给了你解决这种问题的方法,那就是Lua脚本,而且redis的最新版本也支持Lua Script debug,这应该也是未来Redis的一 个发展趋势,要想学好Redis,必会Lua Script... 有趣的是,官网上还提供了一个视频教程教你如何进…
一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNode.YARN 的ResourceManager.HDFS的web页面只有通过Active的NameNode才能正常访问,同样地,YARN的web页面也只有通过Active的ResouceManager才能正常访问. (1) HDFS HA的Web访问 正常使用Nginx的proxy_pass代理单…
小伙伴们再也不用为打印lua的Table对象而苦恼了, 本人曾也苦恼过,哈哈 不过今天刚完成了这个东西, 以前在网上搜过打印table的脚本,但是都感觉很不理想,于是,自己造轮子了~ 打印的效果,自己感觉还比较慢,不敢私藏,赶紧分享... 如有更好的更改,欢迎讨论,优化!!! 以下脚本保存到文件"dumpTable.lua" 之后要使用 直接加载就行了: --- -- @function: 获取table的字符串格式内容,递归 -- @tab: table -- @ind:不用传此参数…
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" foo = a 首先我们先使用ChunkySpy这个工具来看看vm最终会具体生成什么样的vm instructions 在这里,开头为[数字]的行是vm真正生成的字节码,我们看到一共生成了六行字节码.首先loadk将常量表中下标为1的常量即"bar"赋给寄存器0:然后setglobal将…
怎么调试lua性能 我们的游戏使用的是Cocos2dx-lua 3.9的项目,最近发现我们的游戏.运行比较缓慢.想做一次性能优化了.其实主要分为GPU.CPU的分别优化.GPU部分的优化.网上有很多优化措施.但是CPU因为是每个项目都不一样所以也没有什么特别的通用的优化手段.软件运行的速度毕竟跟你的代码质量是直接挂钩的.常规的Lua优化方式.也就是很多地方在提的公共函数的本地化.比如说`local type = type`这种.不过在后来的调查中发现这种方式对于lua5.1效果比较明显.至于5.…
事情的经过 我们的项目中存在好几个战斗界面,不过界面中的内容略有不同.跟同事出去吃饭的时候,他问我.我们现在的战斗界面.有很多是重复的,但是也有偶尔几个地方不太一样.我在战斗过程中驱动这些界面的时候.还需要判断一下有没有这个函数,然后在选择调用它.比较麻烦,你说怎么样才能更好的规划这件事情呢?我第一个想到的就是抽离出来一个UI的父层对象.然后父层对象实现所有的函数.然后让父层函数hook住具体的页面.然后判断具体的页面究竟有没有这个函数,如果存在这个函数那么调用,否则什么都不做就行了.不过,我突…
没有想到我也做了一回标题党.其实这里边说的自动还是有夸大其词的部分.其实只是指定文件夹,然后根据指定文件夹数据,加载目录下边的内容而已. 怎么来进行Lua文件的加载 一般情况下,相关的功能需要给他创建一个相关的目录,然后直接通过我写的一个组件指定这个目录的加载位置就行了.不同的目录之间需要明确他们的加载顺序. 为什么要这么做? 加载的条理性.一般情况下,Lua文件会在需要的时候进行内存加载,这样比较混乱.说比较混乱的原因是没有明确的地方来控制加载的顺序,所以文件加载的顺序比较看脸. 加载内容的安…
第一次接触Linq是在使用C#的时候,这种语法,在处理列表数据非常方便.如果想了解Linq的更多内容可以百度一下Linq,不过你不了解也没关系,让我在Lua中给你展示一下Linq的魅力.简单点说,Linq就是让忽略掉循环的部分,让你更加专业相关的业务实现.算是一种语法糖. 简单举几个例子 1.输出一个类中的所有内容 local test1 = { Attribute1 = "Attribute1", Attribute2 = "Attribute2", Attrib…
项目说明 本行为树的代码使用Lua编写,所有的内容也建立的Lua的基础语法之上 因为公司项目需求,需要一套Lua的行为树代码,所以尝试从饥荒中抽离了行为树相关的代码.绝大多数节点行为与饥荒中相同,不过部分节点因为也许需求也有部分变动 通用说明 行为树状态基本分为4种 READY:准备状态,节点还没有被调用过.或者已经调用结束被Reset之后的状态 RUNNING:正在运行的状态,通常父节点会等待子节点Runing结束才会将自己的状态标示为结束,当然部分节点不会理会子节点的Runing状态 SUC…
一场电闪与雷鸣的结合, 公司原有服务器已经配置好nginx,需要重新装载lua模块,哈哈哈,无法无法.   安装LUA模块需要以下 pcre       ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/luajit         http://luajit.org/download.htmlngx_devel_kit  https://github.com/simpl/ngx_devel_kit/tagslua_nginx_modul…
相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.终极需求 前文的实例都是比较基础的例子,现在来一个贴近真实项目的实例. 下图是要操作的表格: 需求列表: Excel中导出的数据要有类型区分,比如int,string等 第一行为列的中文名称,这个名称只是给策划看,不导出 每张表右侧可以…
Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.什么是xlrd xlrd是python语言中读取excel的扩展工具,可以实现指定表单.指定单元格的读取. 二.安装xlrd 官网安装:到python官…
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 Python导出Excel为Lua/Json/Xml实例教程(三):终极需求 一.Why 无论做什么事,一定有个理由,所以第一步,我来简述一下Why,为什么会有这个需求. 做过游戏的朋友应该知道,游戏当中很多的数据都是通过策划配置在…
我们首先介绍一下什么是协程.然后详细介绍一下coroutine库,然后介绍一下协程的简单用法,最后介绍一下协程的复杂用法. 一.协程是什么? (1)线程 首先复习一下多线程.我们都知道线程——Thread.每一个线程都代表一个执行序列. 当我们在程序中创建多线程的时候,看起来,同一时刻多个线程是同时执行的,不过实质上多个线程是并发的,因为只有一个CPU,所以实质上同一个时刻只有一个线程在执行. 在一个时间片内执行哪个线程是不确定的,我们可以控制线程的优先级,不过真正的线程调度由CPU的调度决定.…
Lua有7种数据类型,分别是nil.boolean.number.string.table.function.userdata.这里我总结一下Lua的string类型和string库,复习一下,以便加深记忆. 个人认为string是Lua编程使用数据结构的时候,重要性仅次于table的类型.十分重要! 一.string基础. Lua并没有字符类型,Lua的string类型表示字符序列.所以,长度为1的string就表示了单个字符.Lua的字符类型有这些特征: 1.string字符序列中的字符采用…
http://jingyan.baidu.com/article/359911f551917457fe0306e5.html 最后将生成的.exe解释器的根目录配置到系统环境变量 copy lua.c lua.1 copy luac.c lua.2 del lua.c luac.c cd ../ md bin cd ./src cl -c -nologo -W3 -O2 -Ob1 -Oi -Gs -MD *.c link -lib -out:lua5.3.3.lib -verbose:lib *…
我们主要解决如下几个问题: 转:http://www.cnblogs.com/zisou/p/cocos2dx-lua2.html http://www.cnblogs.com/sevenyuan/p/4511808.html 2,C++如何获取Lua里面一个Table(Lua利用Table实现面向对象,那就能调用Lua里面的比较高级的引用方法) 3,C++如何访问Lua里面的一个方法? 4,C++如何访问Lua里面的一个带参数的方法? 5,C++如何访问Lua里面的一个带参数的方法并且带返回值…
1.目的:解析rssp2协议   2.如何使用wireshark lua插件 将编写的(假设为rssp2.lua)lua文本,放入wireshark 安装目录下,放哪里都行只要dofile添加了路径. 并且在安装目录下找到init.lua,最后一行添加路径代码 : dofile(DATA_DIR.."RSSP2.lua")    3.介绍 解析由rssp2.lua.p2_data.lua.p2_parse.lua3个文件组成.如果协议内容很少,一个lua文件就能完全解决.init.lu…
1.C# 与 LUAC#调用LUA比较简单,但LUA调用C#,有两种方法,一种是直接反射调用,但这种方法有局限性,比如性能低,在IOS平台无法使用反射,因此一般使用WARP方法,即把C#代码注册到LUA虚拟机,然后调用的时候,LUA -> C# WARP -> C# CODE参考:http://blog.csdn.net/pengdongwei/article/details/50420612 2.LUA变量Lua是动态类型语言,变量不要类型定义,只需要为变量赋值就会创建这个变量Lua 变量有…
Lua代码符合ANSI C标准,只要有C编译器的开发环境就能跑Lua. 虽说只要有C编译器就能跑Lua,但是单片机的环境太简单,有些C标准的内容仍旧无法支持. Lua的官网是:www.lua.org 移植 1) 把 lua.c 和 luac.c 删除,这两个是一个Lua Shell,和平台相关,单片机中一般没用. 2) 对内存敏感的项目可以替换掉 lauxlib.c 文件里 l_alloc 函数调用的 free 和 realloc 函数. 3) loslib.c 和系统相关,单片机中最多跑RTO…
需求是在缓存最近一周内用户所有消息列表,考虑用Redis 存储:为每个存储一个独立Sorted Set,value 为消息体,Score 为MessageId,用以实现增量消息同步. 问题就来了:Sorted Set 怎么清理? -设计内存容量只允许放一周内最新的,太久了缓存意义不大,太浪费. -再者存在百万级/s群发请求,不允许写入时触发清理. 理想模型:如果使用磁盘则使用MyIsam堆表,数据按照顺序写入,再建立以uid为索引,删除却是完全顺序的.内存里面的话Hash 表 + RB 树两个维…
--[[ xpcall( 调用函数, 错误捕获函数 ); lua提供了xpcall来捕获异常 xpcall接受两个参数:调用函数.错误处理函数. 当错误发生时,Lua会在栈释放以前调用错误处理函数,因此可以使用debug库收集错误相关信息. 两个常用的debug处理函数:debug.debug和debug.traceback 前者给出Lua的提示符,你可以自己动手察看错误发生时的情况; 后者通过traceback创建更多的错误信息,也是控制台解释器用来构建错误信息的函数. --]]  …
通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项: 以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压后的目录下如:Lua.bat,具体内容如下: mkdir bin cd src del *.obj cl /O2 /W3 /c /DLUA_BUILD_AS_DLL *.c del lua.obj luac.obj link /Dll /.dll *.obj cl /O2 /W3 /c /DLUA_…

lua

lua的语言特性: 1. lua 的table可以实现多种数据结构:数组.记录.线性表.队列.集合等: 2. lua的closure闭合函数 3. lua的迭代器和泛型的for 4. lua的协同程序:管道和过滤器 5. c與lua的交互接口, nginx lua 模塊 有待補充...…
Unity里能创建 c#脚本模板,但是如果我想创建Lua脚本模板怎么办呢?拓展一下编辑器吧. 设置一下Lua脚本的模板地址 :  Assets/Editor/Lua/Template/lua.lua using UnityEngine; using UnityEditor; using System; using System.IO; using System.Text; using UnityEditor.ProjectWindowCallback; using System.Text.Reg…
闭包 示例一 function newCounter() return function() -- anonymous function i = i + return i end end c1 = newCounter() print(c1()) --> 1 print(c1()) --> 2 示例二 function myPower(x) return function(y) return y^x end end power2 = myPower() power3 = myPower() )…
在云风的ejoy2d里是没有dll和so之类的东西的, 所有的C扩展都是类似这样写的: int ejoy2d_shader(lua_State *L) {      luaL_Reg l[] = {           {"load", lload},           {"unload", lunload},           {"draw", ldraw},           {"blend", lblend},  …
string.gsub 函数有三个参数:目标串,模式串,替换串.基本作用是用来查找匹配模式的串,并将使用替换串其替换掉: s = string.gsub("Lua is good", "good", "bad?") print(s)   --> Lua is bad string.gsub 的第二个返回值表示进行替换操作的次数.例如,下面代码计字符串中空格出现的次数: _, count = string.gsub("test te…