【问题标题】:How to make namespace in lua?如何在lua中创建命名空间?
【发布时间】:2010-12-09 17:00:50
【问题描述】:

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


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

//Lua
Foo_Func()

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


//Lua
Foo.Func()

有什么方法可以这样使用吗? Lua 表可能会有所帮助。但我找不到任何参考资料。

【问题讨论】:

    标签: lua


    【解决方案1】:

    是的,这将通过一个表格来完成,事实上,当您使用 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
    

    【讨论】:

    • 请记住,如果您声明: Foo.Func = function(this) ... end 您可以调用它: Foo:Func() (注意 ':' ),这将传递 Foo 表也作为第一个函数参数。
    【解决方案2】:

    我想你会发现PiL chapter 26.2 最有趣。 如果您将库编译为与表相同的名称(因此文件名 == 模块名),那么您可以简单地 require() 模块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-04
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多