繁体   English   中英

Lua 内部是否有可访问的表或默认类型枚举?

[英]Is there an accessible table or enum of default types somewhere inside Lua?

Lua 是否将其默认类型存储在某处并且可以访问它们? 直接通过 Lua 还是通过 C API? 我知道 function type() ,但是是否可以迭代这些类型? 如果没有这样的表,是否至少有一种方法可以检查传递的字符串是否是上述 function 可以返回的默认类型? 我假设因为 Lua 可以识别它的类型,所以它将它们存储在某个地方,但是它们可以以某种方式访问吗? 是的,我知道我可以制作自己的类型表,问题是我在 Lua 和 C 中都需要这个表,这样它变得混乱。

Lua 源代码中有一个数组type使用:

static const char udatatypename[] = "userdata";

LUAI_DDEF const char *const luaT_typenames_[LUA_TOTALTYPES] = {
  "no value",
  "nil", "boolean", udatatypename, "number",
  "string", "table", "function", udatatypename, "thread",
  "upvalue", "proto" /* these last cases are used for tests only */
};

但这是一个实现细节,不是公共 API 的一部分,它包含一些您实际上不会通过调用 function 获得的值type的文档说:

function 的可能结果是“ nil ”(字符串,不是值nil )、“ number ”、“ string ”、“ boolean ”、“ table ”、“ function ”、“ thread ”和“ userdata ”。

如果我是你,我会在你程序的一个地方硬编码那个类型表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM