AOL's Web Log

Life is like a box of chocolate , you never know what you gonna get .

lua学习(四)

    这几天开了个小差, 把lua的很多扩展库都用了一下, luasocket, luasql, luacom, kepler... 最后终于理解了require的作用了.  其实也就是pil提及到的搜索加载目录那么简单,当然有一个经验就是定义LUA_PATH与package.cpath的值,就像定义include和lib的路径一样, 可以方便地导入到lua环境 :)
    本来打算用luasql的odbc库来做数据库访问的开发, 执行sql语句, 游标以及事务都成功了, 唯独执行带参数的存储过程不知道怎么搞,  这可郁闷了我很久. 由于对odbc不熟, 就查了下msdn文档, 后面看看luasql的源码发现于根本没有支持存储过程的参数. 看来要么就要自己在luasql的基础上扩展下,要么就要放弃它了. 手头上的事很多, 先放放,搞清楚一下odbc再说. 
 现在又回到了pil专注lua的语法了. table真的很cool,可以轻松实现稀疏矩阵, 串, 队列(单双向), 栈,集合以及各种其它的数据结构, 而且非常好用.  metatables和metamethods确实很酷, 利用这些东西可以实现运算符重载(看上去像), 继承(单/多),封装, getter/setter等等. 暂时还没有看到类的那一章. 有了前面的内容,怎么用__index定义原型链构造一个类的继承体系, 加上package, 应该八九不离十了,先意淫一把.
 忘了补充一下, 5.1  c api 中的 luaopen_*现在和lua调用其它普通c函数的过程一样:
lua_pushcfunction(L, luaopen_*);
lua_call();
也可以用
lua_cpcall(L, luaopen_*, 0); 简化上面两步的操作, 实际了看lua_cpcall的源码就知道,是一样的
那么现在5.1推荐的开始调用lua的写法是这样的: 
 lua_State *L = luaL_newstate();
 
 lua_cpcall(L, luaopen_base, 0);
 lua_cpcall(L, luaopen_io, 0);
 lua_cpcall(L, luaopen_string, 0);
 // ...
 // ...

阅读更多
个人分类: 游戏开发
想对作者说点什么? 我来说一句

Lua语言学习资料汇总

2015年05月13日 33.25MB 下载

lua手册(学习lua好帮手)

2009年11月05日 276KB 下载

没有更多推荐了,返回首页

不良信息举报

lua学习(四)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭