lua源码分析 伪索引
2015-03-19 17:15
941 查看
Lua 提供了一个 注册表, 这是一个预定义出来的表, 可以用来保存任何 C 代码想保存的 Lua 值。 这个表可以用有效伪索引 LUA_REGISTRYINDEX 来定位。 任何 C 库都可以在这张表里保存数据, 为了防止冲突,你需要特别小心的选择键名。 一般的用法是,你可以用一个包含你的库名的字符串做为键名, 或者取你自己 C 对象的地址,以轻量用户数据的形式做键, 还可以用你的代码创建出来的任意 Lua 对象做键。 关于变量名,字符串键名中以下划线加大写字母的名字被 Lua 保留。
注册表中的整数键用于引用机制 (参见 luaL_ref), 以及一些预定义的值。 因此,整数键不要用于别的目的。
当你创建了一个新的 Lua 状态机, 其中的注册表内就预定义好了几个值。 这些预定义值可以用整数索引到, 这些整数以常数形式定义在 lua.h 中。 有下列常数:
LUA_RIDX_MAINTHREAD: 注册表中这个索引下是状态机的主线程。 (主线程和状态机同时被创建出来。)
LUA_RIDX_GLOBALS: 注册表的这个索引下是全局环境。
global表只是存放用户级环境的一张默认的空表 C/lua两层共享.
环境表是一个lua核心框架会使用到的表, 基本上不开放给用户, 但会开放使用接口 比如设置环境.
注册表只开放个C层, 语言是希望用户把所有C的元表放在这里.
注册表中的整数键用于引用机制 (参见 luaL_ref), 以及一些预定义的值。 因此,整数键不要用于别的目的。
当你创建了一个新的 Lua 状态机, 其中的注册表内就预定义好了几个值。 这些预定义值可以用整数索引到, 这些整数以常数形式定义在 lua.h 中。 有下列常数:
LUA_RIDX_MAINTHREAD: 注册表中这个索引下是状态机的主线程。 (主线程和状态机同时被创建出来。)
LUA_RIDX_GLOBALS: 注册表的这个索引下是全局环境。
global表只是存放用户级环境的一张默认的空表 C/lua两层共享.
环境表是一个lua核心框架会使用到的表, 基本上不开放给用户, 但会开放使用接口 比如设置环境.
注册表只开放个C层, 语言是希望用户把所有C的元表放在这里.
相关文章推荐
- Lua源码分析(3) -- 虚拟机
- Lua源码分析(1)
- Lua源码分析 -- 对象表示
- Lua源码分析 -- 虚拟机以及指令解释
- Lua源码分析之对象内存
- [lua源码学习笔记]词法语法分析
- Lua源码分析(1) -- 简介
- lucene4.5源码分析系列:lucene默认索引的文件格式-总述
- LuaStudio源码分析1初次编译
- 详解关于Lua源码分析学习教程
- Mongodb源码分析--插入记录及索引B树构建
- lua源码分析(局部变量的定义)
- Lua 源码分析(一)
- Lua源码分析(2) -- 对象表示
- Mongodb源码分析--插入记录及索引B树构建
- lucene的索引源码分析
- lua源码分析3(条件跳转)
- lua源码分析文档
- 分布式搜索Elasticsearch源码分析之二------索引过程源码概要分析
- LUA源码分析三:table分析(1)