Lua
文章平均质量分 59
呵离
人生百味,情最浓,人生繁华,淡最真.不论时光如何流转,有些东西不会改变,那就是对美好的追求,对真情的渴望.
展开
-
Lua闭包的理解
本文来自:http://www.2cto.com/kf/201503/382691.html闭包的概念在Lua中,闭包(closure)是由一个函数和该函数会访问到的非局部变量(或者是upvalue)组成的,其中非局部变量(non-local variable)是指不是在局部作用范围内定义的一个变量,但同时又不是一个全局变量,主要应用在嵌套函数和匿名函数里,因此若一个闭包没有会访问的非转载 2015-08-19 19:26:02 · 550 阅读 · 0 评论 -
lua: pcall xpcall debug
pcall 以保护模式调用函数, 返回true/false, errinfo: function test() print("hello world") error("wrong value")endpcall(test) -- => false, xxxx.lua: 20: wrong valuexpcall pcall发生错误时, 直接返回errinfo, 但原创 2016-04-28 19:27:54 · 1777 阅读 · 0 评论 -
lua metatable/metamethod学习
metatable类似封装了lua类型的操作符; 作用 lua的类型定义的一组操作符, 即当要对对象进行操作的时候,则查看元表里有没有对应的操作符; 如table的+对应__add, 该字段就是所谓在元方法(函数); lua 中每个值都有一个元表, 而只有table, userdata 有自己独立在元表,其它的类型都是共享一个元表; table默认创建时元表为nil;原创 2016-03-27 00:04:06 · 429 阅读 · 0 评论 -
lua面向对象学习
代码如下: -- 基类属性Animal = {}-- 构造函数,传入的是tablefunction Animal:new(o) o = o or {} setmetatable(o,self) self.__index=self self.wt=20 self.name="dog" return o --返回的是创建的table, 不是selfendfunctio原创 2016-03-26 20:14:33 · 280 阅读 · 0 评论 -
lua5.3与C++交互学习(二)
C++中对lua协程和返回值的处理lua语言中, 在coroutine的resume和yield之间可以相互传递参数, 最近研究了下lua_resume和lua_yield 两个函数, 同样利用这两个函数可以通过栈在C++与lua之间很方便的交换数据;这里给出一个简单的示例; 1.lua中写一个协程函数 function CorTest() print("coroutine beg原创 2016-04-05 15:38:57 · 992 阅读 · 0 评论 -
Lua5.3 与C交互学习(一)
C++调用Lua函数 main函数中环境搭建 #include <stdio.h>#include <string.h>extern "C"{#include <lua.h>#include <lualib.h>#include <lauxlib.h>}int main(int argc, char* a原创 2015-10-07 16:57:03 · 5951 阅读 · 0 评论 -
lua luaL_ref引用
介绍 int luaL_ref (lua_State *L, int t); Creates and returns a reference, in the table at index t, for the object at the top of the stack (and pops the object)…. You can retrieve an object referr原创 2016-04-05 13:45:00 · 5747 阅读 · 0 评论 -
lua5.3模块学习
模块要实现的就是一个封装独立功能的东西, 所以lua里可以通过table来实现, 但有下面的东西需要注意;require 与 loadstring的区别 require 实现是先在package.loaded[modname] 中查找该模块有没有加载, 如果加载则不会重复加载, 而 loadstring每次都会加载; 这样就避免了无限相互加载对方的情况出现 且需要返回值, 一般返回模块原创 2016-03-26 18:03:35 · 1954 阅读 · 0 评论 -
lua5.3源码基础阅读(luaL_openlibs)
C库结构和导入到lua 导入全局性的库到lua中,这些库由C实现: /*** these libs are loaded by lua.c and are readily available to any Lua** program*/static const luaL_Reg loadedlibs[] = { {"_G", luaopen_base}, {LUA_L原创 2016-04-01 20:17:01 · 5821 阅读 · 0 评论 -
lua5.3.1 源码阅读记录(基础)
通用数据结构:Tvalue// lua中所有对象的基本数据结构union Value { GCObject *gc; /* collectable objects */ void *p; /* light userdata */ int b; /* booleans */ lua_CFunction f; /* light C functi原创 2016-03-16 21:41:46 · 2716 阅读 · 0 评论 -
Learning Game AI Programming with lua(一)
项目代码运行 前几天偶然在找资料时发现了这本与去年11月(2015.11)出版的新书, 很适合最近资料就拿来看(不得不表扬下我大天朝的分享精神,这才是互联网的精髓嘛^_^). 第一步就是把代码跑起来, 第一次接触decoda, 摸索了一个上午搞定,现介绍如下: 1. 根据书中的地址下载代码,进pucktpub下载; 2. 作者已经给我们把工程配的very perfect, 当然你的电原创 2015-12-10 14:38:28 · 1173 阅读 · 0 评论 -
Lua基础
Lua基础 Lua没有main的概念,只能嵌入到一个宿主程序中工作,这个宿主程序被称作embedding program 或 host. \ddd : ddd是一串最多三位的十进制数字, 用来描述一个字符. \10, 如果该字符后面接一个数字5,则\0105 下面五种描述了完全相同的字符串: a = “abc\n123”; a = [[abc 123]];原创 2015-09-16 14:17:29 · 693 阅读 · 0 评论 -
lua面向对象与基于lua的状态机实现
之前一篇文章只是简单的介绍lua的面向对象, 对这方面的理解还很浅,最近在游戏中实现了一个状态机, 这里简单介绍;思路介绍 状态有很多,需要有扩展性, 所以这里的状态有独立的类结构, 同时状态机作为一个功能要让每个角色对象身上都拥有自己的状态机, 因此也是一个类; 状态机里包含以唯一名字标记对应的状态, 由于状态对于一个游戏角色的行为来说, 可以看作是底层实现, 所以一些公共状态可以原创 2016-04-18 22:15:14 · 2355 阅读 · 0 评论