Lua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的
Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingnow.com Copyright © 2006 Lua.org, PUC-Rio. All rights reserved. 1 - 介绍 Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编
一、table的解释(云风说的很好,摘抄如下):     lua 的整体效率是很高的,其中,它的 table 实现的很巧妙为这个效率贡献很大。 lua 的 table 充当了数组和映射表的双重功能,所以在实现时就考虑了这些,让 table 在做数组使用时尽量少效率惩罚。 lua 是这样做的。它把一个 table 分成数组段和 hash 段两个部分。数字 key 一般放在数组段中,没有初始化过的 k
原文地址: http://blog.csdn.net/linkerlin/article/details/2254725 LuaBind --最强大的Lua C++ Bind  1 介绍 LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有 能力支持函数式的定义一个Lua类,而且使之继承自C++或者Lua. Lua类可以覆写从 C++ 基类 继承
首先,先来一段在lua创建一个类与对象的代码 Class = {}   Class.__index = Class    function Class:new(x,y)       local temp = {}       setmetatable(temp, Class)       temp.x = x      
* Quick Introduction to LuaBind:http://www.nuclex.org/articles/cxx/1-quick-introduction-to-luabind * luabind导出C函数:http://www.cnblogs.com/juncheng/archive/2009/07/28/1575277.html * luabind导出C++类:http:/
Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值相同(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然能定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1的内嵌,而f1的外包也一定是f2的外包。内嵌函数能访问外包函数
什么是Metatable        Lua中Metatable这个概念, 国内将他翻译为元表. 元表为重定义Lua中任意一个对象(值)的默认行为提供了一种公开入口. 如同许多OO语言的操作符重载或方法重载. Metatable能够为我们带来非常灵活的编程方式.        具体的说, Lua中每种类型的值都有都有他的默认操作方式, 如, 数字可以做加减乘除等操作, 字符串可以做连接操作, 函
首先,栈的基本操作是出栈、入栈、获取指定位置的栈元素等,这些基本的要熟。下面说下Lua调用宿主语言函数的过程中,栈的事情。 其次,Lua和宿主语言(比如C)交互时,Lua环境必然要与宿主语言环境互相传递数据。比如Lua调用宿主语言注册的函数,Lua必须把参数一个个放入到栈里,然后宿主语言的函数必须从栈里一个个把参数取出来,做某些操作,最后宿主语言必须将返回值一个个放到栈里,Lua端再一个个从栈里取
Lua脚本语法说明(修订)  Lua脚本语法说明(增加lua5.1部份特性) Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。 所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了,就懂得怎么写Lua程序了。 在Lua中,一切都是变量,除了关键字。 I.  首先是注释 写一个程序,总是少不了注释的。 在Lua中,你可以使用单行注释和多行注释。 单行注释中,
在Lua中调用C++函数 我的第二部分教程讲解了怎样在C++中调用Lua函数。在这部分中,我们将讨论相反的情况——在Lua中调用C++函数。由于我没有想到一个简单的例子来说明这种情况,因此,我借用了Lua官方文档中的average函数来进行讲解。 本教程涵盖了Lua5.1。在Lua的每一个版本中都有一些非常不同之处。下面的示例代码将不能在老版本的Lua下运行。如果你仍然在使用老版本而且不愿意升级,
一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  start, end) concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开。除了ta
Lua脚本语法说明(增加lua5.1部份特性)   Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。   所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了,就懂得怎么写Lua程序了。   在Lua中,一切都是变量,除了关键字。 I.  首先是注释   写一个程序,总是少不了注释的。   在Lua中,你可以使用单行注释和多行注释。   单行注释中,连续两
需要tolua++ tolua.cast(object , "ClassName");
一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下: 方法1 --在一个死循环中设置一个跳出条件,但是这样的做法会占用大量CPU资源,强烈不推荐使用哦 function sleep(n)    local t0 = os.clock()    while os.clock() - t0 <= n do end end 方法2 --调用系统的sle
function Split(szFullString, szSeparator) local nFindStartIndex = 1 local nSplitIndex = 1 local nSplitArray = {} while true do local nFindLastIndex = string.find(szFullString, szSeparator, nFindSta
x (这里 x 是指其不是这些转义字符 ^$()%.[]*+-? 之一) --- 其代表了这个字符本身. . --- 代表任何字符 %a --- 代表任何字母. 即[a-zA-Z] %c --- 代表任何的控制字符. %d ---代表任何的数字字符. 即[0-9] %l --- 代表所有的小写字母. 即[a-z] %p --- 代表所有的标点符号字符. %s --- 代表所有空格,tab 字符.
tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"} for key, value in ipairs(tbl) do print(key, value) end --pairs() --pairs()函数基本和ipairs()函数用法相同, 区别在于pairs()可以遍历整个table, 即包括数组及非数组部分. -->如有pairs
tbl = {"alpha", "beta", ["one"] = "uno", ["two"] = "dos"} for key, value in ipairs(tbl) do print(key, value) end --pairs() --pairs()函数基本和ipairs()函数用法相同, 区别在于pairs()可以遍历整个table, 即包括数组及非数组部分. -->如有pairs
lua作为小巧精悍的脚本语言,易于嵌入c/c++中 , 广泛应用于游戏AI ,实际上在任何经常变化的逻辑上都可以使用lua实现,配合c/c++实现的底层接口服务,能够大大降低系统的维护成本。下面对lua和c/c++的交互调用做一个实例分析: lua提供了API用于在c/c++中构造lua的运行环境,相关接口如下: //创建lua运行上下文 lua_State* luaL_newstate(void
lua程序中使用loadlib导入动态库,出现错误   attempt to call global 'loadlib' (a nil value) 修正方法: luaconf.h文件中, 将 #undef LUA_COMPAT_LOADLIB 改成 #define LUA_COMPAT_LOADLIB 重新build你的lua工程。OK!!!
lua中设置当前通道变量: 方法一: session:setVariable("fullName", "xxxxx");--需判断session是否为空 方法二: local uuid =getUUID(callerid); local res=api:executeString("uuid_setvar ".. uuid .." fullName ".."xxxxxxx") 该处设置的变量可以是
string.gsub 函数有三个参数:目标串,模式串,替换串。 基本作用是用来查找匹配模式的串,并将使用替换串其替换掉:  s = string.gsub("Lua is good", "good", "bad?")  print(s)   --> Lua is bad string.gsub 的第二个返回值表示进行替换操作的次数。例如, 下面代码计字符串中空格出现的次数:  _, count
Martin Streicher (martin.streicher@linux-mag.com), 首席编辑, Linux Magazine 2006 年 6 月 12 日 虽然编译性编程语言和脚本语言各自具有自己独特的优点,但是如果我们使用这两种类型的语言来编写大型的应用程序会是什么样子呢?Lua 是一种嵌入式脚本语言,它非常小,速度很快,功能却非常强大。在创建其他配置文件或资源格式(以及与之
luaCom             支持COM调用 LuaDoc             支持lua代码的文档生成 LuaExpat          支持XML解析 LuaFileSystem   文件系统访问 LuaLogging       基于log4j的日志 LuaProfiler        性能测试工具 LuaSocket        网络库,支持HTTP,FTP,SMTP,
因为项目中需要用到lua相关的东西,所以找了篇文章学习了下。以下zz from http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html Lua脚本语法说明(增加lua5.1部份特性)   Lua 的语法比较简单,学习起来也比较省力,但功能却并不弱。   所以,我只简单的归纳一下Lua的一些语法规则,使用起来方便好查就可以了。估计看完了
前情提要 Lua 通过一个虚拟栈与 C 的交互,正数索引自底向上取值,负数索引自顶向下取值。 Lua 中的 Table(表)结构可以使用任何数据作为 key 进行取值。使用 C API 访问 Table 中的元素有两种方法: lua_getglobal(L, t); lua_pushinteger(L, k); -- 这里可以换成其它类型的 lua_pushXXXX(L, k) 压数据到栈顶作ke
把GUI的消息处理从代码中分离出来,并交给lua脚本处理,这样可以给你的界面带来很大的灵活性.GUI 的相关地东西可以在测试期间很轻松的修改. Lua中的负责处理消息的东西其实只不过是普普通通的只带一个参数的Lua函数而已.若想用它作事件 处理函数,你必须先在系统中注册它.所以除非你在初始化脚本中载入他们,你必须在处理相应事件之前 载入相关脚本文件. 载入脚本文件 有2种载入脚本文件的方法:使用c
安装 luasocket # wget http://luaforge.net/frs/download.php/2664/luasocket-2.0.2.tar.gz # tar zxvf  luasocket-2.0.2.tar.gz # cd luasocket-2.0.2 # make # make install 在lua  中启用luasock的问题 编译出现  thread.c:(.
Lua中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌必然是f1的内嵌,而f1的外包也一定是f2的外包。内嵌函数可以访问外包
  环境:luafor windows (lfW) 主页: http://luaforwindows.luaforge.net/ lua for windows其实是一整套Lua的开发环境,它包括: Lua Interpreter(Lua解释器) Lua Reference Manual(Lua参考手册) Quick Lua Tour (Lua快速入门) Examples (Lua范例) Libr