zoukankan      html  css  js  c++  java
  • Lua 5.3注册C++类相关API

    int luaL_newmetatable (lua_State *L, const char *tname);

    如果注册表中不存在名为tname的表,则在注册表中创建一个名为tname的表,并将这个表压栈,返回值为1;

    如果注册表中已存在名为tname的表,则直接将这个表压栈,返回值为0。

    void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int glb);

    如果modname在package.loaded中不存在,则调用openf,并以字符串modname作为实参,然后将结果保存在package.loaded[modname]中,和Lua脚本中require函数的功能类似;

    如果glb为true,那么也会将结果保存到全局变量modname中。

    这个函数会在堆栈上保留一个module的副本。

    * 类的名字和模块的名字可以是不同的。

    通俗地说,类的表存储在注册表中,而模块的表存在package.loaded中。

    如果需要把类注册到模块中,需要把类的表作为一个元素设置到模块的表中,这时需要用一个名字来索引模块表中的类表。

    类的表在注册表中不需要一定使用字符串来做索引,也可以使用Light Userdata和引用机制。

  • 相关阅读:
    Day 18
    Day 17
    Day 16
    Day 15
    Day 14
    Day 13
    Day 12
    Day 11
    Day 10
    《ES6标准入门》(阮一峰)--2.let 和 const 命令
  • 原文地址:https://www.cnblogs.com/lilei9110/p/7183893.html
Copyright © 2011-2022 走看看