随笔分类 - Lua
摘要:一直在寻找一款lua作为界面开发语言脚本框架,类似于web开发,使用html做界面, lua作为脚本语言进行行为控制,htmlayout是不二选择,但是其搭配的默认脚本并不是lua,这里找到一个 开源的框架,将htmlayout进行了改造,使其支持lua脚本作为逻辑控制语言; 本系列文章将对mfcui源码进行简要分析,并试图将其改造为自己的界面开发框架,该框架使用的是lua5.1;...
阅读全文
posted @ 2017-11-11 12:45
Mr.R123
摘要:为什么要引入弱表? 我们都知道,lua具有自动内存管理,我们只管创建对象,无需删除对象,对于不再需要的对象只需要简单置为nil, lua会自动删除那些被认为是垃圾的数据;问题就在于,什么对象才是垃圾对象呢?有时候,程序员很清楚的知道某个对象 是垃圾,而lua却无法发现; 比如下面的例子: t = {};-- 使用一个table作为t的key值key1 = {na...
阅读全文
posted @ 2017-10-31 16:31
Mr.R123
摘要:最近在研究云风的skynet服务端框架程序,里面服务的回调代码中用到协程,这里仔细研究一下; 一、什么是协程? (1)线程:我们知道C中线程就是一个执行序列,我们在程序中创建多线程时,在单核心CPU状态下,一个时刻其实只有一个线程在执行, 在某个时间片内执行的是那个线程对程序员来说是不确定,程序员可以指定线程的优先级,但是真正的线程调度是由CPU调度来决定的; (2)协程:Lua中的...
阅读全文
posted @ 2017-10-31 10:53
Mr.R123
摘要:通常来说,C函数需要保留一些非局部的数据,也就是指那些超过他们作用范围的数据。C语言中我们使用全局变量或者static变量来满足这种需要。然而当你为Lua设计一个程序库的时候,全局变量和static变量不是一个好的方法。首先,不能将所有的Lua值保存到一个C变量中。第二,使用这种变量的库不能在多个Lua状态的情况下使用。 一个替代的解决方案是将这些值保存到一个Lua全局变两种,这种方法解决了...
阅读全文
posted @ 2017-10-27 14:45
Mr.R123
摘要:1、lua_next(L, t_idx) 参数解释: L:虚拟机 t_idx:table在栈中索引 返回 int:0执行失败;非0执行成功 该函数的执行流程为: ①:先从栈顶弹出一个key; ②:从栈指定位置的table中取下一对key-value对,先将key入栈,再将value入栈; ③:如果②成功则返回非0值;否则返回0,并且不向栈中压入...
阅读全文
posted @ 2017-10-09 18:56
Mr.R123
摘要:1、将以下脚本复制到文件lua.uew文件中,并放入:D:\Program Files (x86)\IDM Computer Solutions\UltraEdit\wordfiles安装文件夹语法高亮目录下面;说明:从官网下载lua.uew文件不支持块注释,并且local函数或者类成员函数都不能F8直接显示/L20"Lua" Block Comment On = --[[ Block Comme...
阅读全文
posted @ 2017-09-30 21:49
Mr.R123
摘要:1、本机安装了VS2017,所以使用批处理进行编译: cd src cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c del lua.obj luac.obj link /DLL /out:lua53.dll l*.obj cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c link /out:lua.exe lua.obj...
阅读全文
posted @ 2017-09-30 21:48
Mr.R123
摘要:今天仔细读了文档,弄清楚了Lua的模块require机制。Lua是通过require函数来加载模块的,只需提供模块的名字,即可通过require(modname)来加载模块。Lua是如何通过modname来载入.lua或.so的呢? 默认加载过程 package.loaded[modname]中存了模块的数据,有则直接返回 顺序遍历package.searchers,获取loade...
阅读全文
posted @ 2017-09-29 09:50
Mr.R123
摘要:Lua中的协程和其他变量一样,都是第一类值(first-class alue),可以被保存在变量中,可以被作为参数传递,可以被函数返回。协程有4种状态:挂起(suspended),运行(running),死亡(dead)和正常(normal)。 Lua为协程提供了3个基础接口:create,resume和yield。#coroutine.create创建一个新的协程,并为它的运行分配一个独立的栈协...
阅读全文
posted @ 2017-09-29 09:33
Mr.R123

浙公网安备 33010602011771号