zoukankan      html  css  js  c++  java
  • lua环境变量

    function foo()

      print(g or "'g' is not defined!")

    end

    foo()

    env = { g = 100, print = print }

    setfenv(foo, env)  --设置foo的环境为表env

    foo()

    print(g or "'g' is not defined!")

    输出结果:

    'g' is not defined!

    100

    'g' is not defined!

    函数环境

    函数环境就是一个函数在运行时所能访问的“全局”变量的集合,装在一个

    表中。在缺省状态下,一个函数与定义它的函数共享同一个环境;但是每个

    函数都可以有自己独立的环境,通过setfenv来设定。在前面的代码中,函数foo的缺省环境里没有定义变量g,因此第一次执行foo, g为nil。随后,foo被指定了一个环境 { g = 100, print = print }。这个环境定义了(全局)变量g,以及打印函数print,因此第二次执行foo,g的值就是100。但是在定义函数foo的函数的环境下,g仍然是一个未定义的变量。函数环境是一个比较复杂的概念,建议读者结合示例与文档仔细体会。

    应用

    利用它可以实现“安全沙箱”执行不受信任的代码;另外Lua的模块

    (module)的实现也依赖它。

  • 相关阅读:
    华为机试题 二叉查搜索树 判断两序列是否为同一二叉搜索树序列
    华为机试题 火车进站
    Linux命令学习 rmdir
    Linux命令学习 rm
    Linux命令学习 mkdir
    Linux命令学习 du
    Linux命令学习 pwd
    Linux命令学习 ls
    Linux命令学习 cd
    伪代码编程过程
  • 原文地址:https://www.cnblogs.com/wrbxdj/p/4929738.html
Copyright © 2011-2022 走看看