Lua
文章平均质量分 74
hong201
飘过Web App,来到Game Dev,关注Android。目前专注于PC Game,望志同道合的朋友一起交流,共同进步!——Simple is better!
展开
-
接触lua的协同程序
lua中没有真正的多线程,用了协同程序代替,照例来个demo看看,如下: #!usr/bin/env luafunction receive(prod) local status, value = coroutine.resume(prod) return valueendfunction send(v) coroutine.yield(v)en原创 2009-04-06 20:32:00 · 1775 阅读 · 0 评论 -
Lua源码阅读三——lua字符串缓存
<br />本篇文章,主要探讨一下lua中的字符串缓存管理(涉及到的文件 lstring.c )。<br /> <br />在lua的9种数据类型中,字符串是属于可以被GC回收的类型。在lua中,操作字符串实际上是在操作字符串引用,当字符串不在被使用的时候,GC会通过一定算法回收。<br /> <br />--lua9种数据类型:<br />#define LUA_TNIL 0#define LUA_TBOOLEAN 1#define LUA_TLIGHTUSERDATA 2#define原创 2010-12-18 21:39:00 · 9726 阅读 · 1 评论 -
Lua源码阅读二——lua内存管理
<br />距离写的上一篇lua源码阅读,已经一个月了,在这一个月里,除了正常上班之外,业余时间都去玩战神-奥林匹斯之链了,当然,lua源码阅读的任务也在进行中。<br />接下来,将对个人在过去一个月的业余时间里阅读lua源码进行一下总结,,将陆续写一些个人阅读lua源码时的一些分析、一些疑问等等,力争保证每天一篇,力争在2010年结束之前写完。废话不多了,开始本篇的主题吧。<br /> <br />本篇文章,主要探讨一下lua中的内存管理(涉及到的文件 lmem.c,lauxlib.c )。<br />原创 2010-12-16 21:53:00 · 11022 阅读 · 0 评论 -
Lua学习笔记七——lua也面向对象
lua也面相对象?不错,是的。它有面向对象的操作。看看简单示例:CTest = { cnt = 0 }function CTest:new(o) o = o or {} setmetatable(o, self) self.__index = self return oendfunction CTest.add(self, v) self.cnt = s原创 2009-05-09 20:54:00 · 7220 阅读 · 1 评论 -
Lua学习笔记六——package
lua和其他语言一样,也有模块/包的概念,稍微有点不同的是,默认先从环境变量LUA_PATH中搜索lua文件,如果搜索不到,则从LUA_CPATH中搜索C文件。 对于我来说,时而去改变环境变量,则显得麻烦,并且在另外的环境中部署时还要修改环境变量,则显得不人性化,因此,觉得如下方式增加搜索路径比较好: --将自定义包路径加入package的搜索路径中。也可以加到环境变量LUA_P原创 2009-05-09 15:15:00 · 28925 阅读 · 1 评论 -
Lua学习笔记五——metatable
metatable是元表的意思,在python中,有meta class,即元类,不管是元表还是元类,都是功能强大的,简单的来说,元类就是类的类,元表就是table的table。下面看看元表的强大,利用table模拟list的加法操作: 定义列表tablelist = {}list.mt = {} 其中list.mt是用来准备定义list的元表的 定义初始化函原创 2009-05-05 23:33:00 · 3015 阅读 · 1 评论 -
lua学习笔记三——iterator and closure
以代码为主,辅助注释 --1.无状态迭代器--[[ for in do --staff end 其中,应该返回3个值:迭代器函数,恒定状态,控制变量]]local function getnext(list, node) if not node then return list else return node.next end原创 2009-05-03 12:55:00 · 1522 阅读 · 0 评论 -
Lua学习笔记四——协同程序coroutine
lua中的协同程序类似于多线程,但是与多线程还是有点区别的,区别在于协同程序必须必须合作,且同一时刻只有运行一个协同程序。 function p() print("Hello World")end 这是一个简单的示例函数,下面看看协同程序的调用co = coroutine.create(p)print(co) --> thread: 003FBBF0pr原创 2009-05-05 15:34:00 · 3158 阅读 · 1 评论 -
Lua学习笔记二
lua的第二篇学习笔记 小程序+输出说明 --1. 逻辑比较 >,>=,<,<=, ==, ~=print( "---------1----------------")print(3.14 ~= math.pi) --> truex = x or math.pi -- 等价于 if not x then x = v endprint(x)原创 2009-04-28 21:03:00 · 1593 阅读 · 0 评论 -
Lua学习笔记一
前段时间有空, 看了一小会lua,现在好像又还给了,脑袋空空,再次翻开lua,记录至此。 --[[ 学习lua,小程序,当作学习而已,程序可能没有什么实际意义]]-- 1.Hello worldprint( "---------1----------------")print("Hello world") --> Hello World--原创 2009-04-26 23:12:00 · 3145 阅读 · 1 评论 -
EditPlus中配置python,lua环境
EditPlus是我常用的文件编辑器之一,用它来下脚本程序甚是方便,下面来看看如果配置吧:1.先到www.editplus.com上下载editplus.exe,一步一步安装就好了,只有30天的试用期。2.来配置python环境,到www.editplus.com 上下载python配置环境,要下载对应的版本啊。 1):打开editplus,工具--》首选项--》用户工具点击组原创 2009-04-26 18:21:00 · 4909 阅读 · 0 评论 -
Lua源码阅读一——在Windows下编译
<br />最近感觉没啥可看,就看一下lua源码,打发打发时间吧。<br />首先需要下载编译lua源码了,笔者是在Windows+VS2005下编译通过<br /> <br />1.首先需要去官方网站上下载lua源码,到www.lua.org上下载lua源码,目前最新版本是5.1 RC4版本lua-5.1.4.tar.gz,解压之后,目录下有install文件,在该文件中详细说明了在linux下编译的过程,visual studio下的编译也提了一下<br />2.编译lualib<br />新建一个vc原创 2010-11-14 19:44:00 · 10773 阅读 · 0 评论