返回介绍

2.9 - 环境

发布于 2019-08-25 13:16:36 字数 636 浏览 1124 评论 0 收藏 0

2.9 - 环境

类型为 thread ,function ,以及 userdata 的对象,除了 metatable 外还可以用另外一个与之关联的被称作 它们的环境的一个表, 像 metatable 一样,环境也是一个常规的 table ,多个对象可以共享 同一个环境。

userdata 的环境在 Lua 中没有意义。 这个东西只是为了在程序员想把一个表关联到一个 userdata 上时提供便利。

关联在线程上的环境被称作全局环境。 全局环境被用作它其中的线程以及线程创建的非嵌套函数 (通过 loadfileloadstring 或是 load )的缺省环境。 而且它可以被 C 代码直接访问(参见 §3.3)。

关联在 C 函数上的环境可以直接被 C 代码访问(参见 §3.3)。 它们会作为这个 C 函数中创建的其它函数的缺省环境。

关联在 Lua 函数上的环境用来接管在函数内对全局变量(参见 §2.3)的所有访问。 它们也会作为这个函数内创建的其它函数的缺省环境。

你可以通过调用 setfenv 来改变一个 Lua 函数 或是正在运行中的线程的环境。 而想操控其它对象(userdata、C 函数、其它线程)的环境的话,就必须使用 C API 。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文