如何在lua中创建命名空间?

时间:2010-12-09 02:24:23

标签: lua

我想将静态类函数绑定到lua。 如您所知,静态类函数与类函数有所不同。 所以lua中的函数调用代码应该是这样的......


//C++
lua_tinker::def(L, "Foo_Func", &Foo::Func);

//Lua
Foo_Func()

但是我想像这样在lua中调用函数


//Lua
Foo.Func()

有没有办法像这样使用? Lua表可能会有所帮助。但我找不到任何参考资料。

2 个答案:

答案 0 :(得分:10)

是的,这可以通过表来完成,实际上当您使用require导入它们时,大多数模块的工作方式。

Foo = {} -- make a table called 'Foo'
Foo.Func = function() -- create a 'Func' function in stored in the table
    print 'foo' -- do something
end
Foo.Func() -- call the function

答案 1 :(得分:4)

我认为你会发现PiL chapter 26.2最有趣。 如果您将库编译为与表相同的名称(所以filename == modulename),那么您可以只需要()模块。