码迷,mamicode.com
首页 > 其他好文 > 详细

lua 设置文件运行的环境

时间:2017-01-26 11:31:07      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:check   pre   module   end   dex   cal   print   class   get   

背景

在一个lua文件中书写的代码, 使用的变量, 需要设置其运行环境。

目的:

1、 不破坏全局环境。

2、 限定文件所使用的环境, 作为沙箱功能。

解法

 

限定运行空间环境的文件:

local m = {}

m.dingzhiprint = function ()
    print("nasView print")
    
    print(os.getenv("PWD"))
end

bbb = 1

print("dmenu="..dmenu)

return m

 

加载上个文件的代码 (将dmenu的值,传入上个文件, 并限定只能在全局环境中读取):

function callfunc()
    local dmenu = "aaaa"
    

    local prog = _G.loadfile("newModule.lua") --check lua or chunk
    
    --local _env
    local env = setmetatable({dmenu=dmenu}, {__index=_G})
    --local env = getfenv(1)
    if env then
        --_env = getfenv (prog)
        setfenv (prog, env)
    end

    prog ()    
    
end


callfunc()

 

lua 设置文件运行的环境

标签:check   pre   module   end   dex   cal   print   class   get   

原文地址:http://www.cnblogs.com/lightsong/p/6351359.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!