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

我想将静态类函数绑定到 Lua。 正如您所知,静态类函数与类函数有所不同。 因此,在 Lua 中,函数调用代码应该如下所示...


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

//Lua
Foo_Func()

但我想在 Lua 中这样调用函数


//Lua
Foo.Func()

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

原文链接 https://stackoverflow.com/questions/4394303

点赞
stackoverflow用户1491
stackoverflow用户1491

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

Foo = {} -- 创建名为'Foo'的表格
Foo.Func = function() -- 在表格中创建名为'Func'的函数
    print 'foo' -- 做些什么
end
Foo.Func() -- 调用函数
2010-12-09 06:21:26
stackoverflow用户513763
stackoverflow用户513763

我认为你会发现《PiL》第26.2章非常有趣。 如果你将库编译成与表相同的名称(所以文件名==模块名),那么你只需要require()该模块即可。

2010-12-09 09:00:50