Browsed by
Tag: table

C向Lua函数传递table参数

C向Lua函数传递table参数

有时需要向函数传递相对比较复杂的数据,定义多个形参显得很难看,C语言函数中通常传递一个数据结构,而对于lua最直接的莫过于传递一个table数据。C调用lua函数时,也可以通过构造table数据传递给lua函数。

基本步骤比较简单,大致是(1)获取lua函数(2)在栈中构造一个table(3)向table中压入相应的数据(key-value)(4)执行lua函数。

以下伪码详细描述了这个过程:

......
lua_getglobal(L, "demoFunc"); // 获取Lua函数名

lua_newtable(L); // 创建一个table
lua_pushstring(L, "intVal");  //key为intVal
lua_pushinteger(L,1234);      //值为1234
lua_settable(L, -3);          //写入table
lua_pushstring(L, "strVal");  //key为strVal
lua_pushstring(L, "yxh");     //值为yxh
lua_settable(L, -3);          //写入table

lua_pcall(L,1,0,0); // 调用demoFunc函数
......
鸡肋的面向对象

鸡肋的面向对象

最近在研究Lua语言,主要参考Lua语言文档。简单地做了一些练习,感觉有点新鲜,也有点不适。

其中关于“面向对象”的章节实在太诡异,太拧巴了。单是那莫名其妙的冒号“:“就让人抓狂,更不用说对table的各种元操作。太夸张了,这是认真的么?作为有C++、python等语言背景的开发人员,我不得不说:这简直是为了面向对象而面向对象,无论是定义方式还是实现方式都太烂了!table固然让人击节赞叹,扭曲她去实现所谓的面向对象,有种美女变野兽的残暴感。

如果使用Lua语言,根本没有必要在意面向对象。Lua语法如此魔性,使用者应该抛弃面向对象的思维方式,而直接走函数式编程路子,堪称完美!