baidu

随笔分类 -  Lua

Lua以及Lua和C/C++的交互
摘要:今天微博上有人发一个帖子,可以用js来函数式编程. 比如:function f(x, y, z) { return x + y + z;}var f1 = f.bind(null, 1);f1(2,3) === 6; 看完之后,我表我们lua也能实现这样的效果. function bind(f,...) local args={...} return function(...) local local_arg={...} local arg = {} for _,v in pairs(args) do table.insert(ar... 阅读全文
posted @ 2013-05-20 16:37 egmkang 阅读(1764) 评论(2) 推荐(0) 编辑
摘要:题目不知道怎么取才好,但是意思很简单:如果你暴露一个复杂对象给Lua,实现类似于OO编程的话,那么也要把析构函数暴露给Lua.否则的话,lua gc的时候,回收垃圾对象,没有找到回收函数,就直接free掉了,这在C++中,是相当致命的.tolua++中的tolua_cclass函数,用来注册lua对象,TOLUA_API void tolua_cclass (lua_State* L, const char* lname, const char* name, const char* base, lua_CFunction col)同时会把最后的那个参数col,注册到lua对象的元表里面:sta 阅读全文
posted @ 2012-07-01 17:12 egmkang 阅读(10209) 评论(9) 推荐(0) 编辑
摘要:网友问了一个问题,说对象A在内部可以修改HP.外部对象只能访问对象A的HP,不能修改.这东西其实可以用__index和__newindex来实现.__index指向对象A,这样就可以访问;__newindex重写,修改hp的话,就禁止.就可以完成他的需求.下面给出简单的代码:function cannotModifyHp(object) local proxy = {} local mt = { __index = object, __newindex = function(t,k,v) if k ~= "hp" then object[k] = v en... 阅读全文
posted @ 2011-09-27 14:16 egmkang 阅读(4683) 评论(2) 推荐(2) 编辑
摘要:lua里面函数是first-class function,这样就显得lua的函数跟C/C++里面不太一样.local function print()--code hereend--其实就是local print = function () --匿名函数--code hereend因为函数是first-class function,所以你可以拿一个变量去索引那个函数,而且此时函数的上下文信息还有,在函数体内可以访问外部的信息.(扯远了,这是闭包,有兴趣的去看看wiki)经常看到这样的代码:tb = {}function tb.print()end其实有了上面的知识,我们也能知道,刚才那段代码也 阅读全文
posted @ 2011-05-02 15:30 egmkang 阅读(5322) 评论(3) 推荐(1) 编辑

点击右上角即可分享
微信分享提示