青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

戰(zhàn)魂小筑

討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

   :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

項(xiàng)目客戶端腳本全面升級(jí)lua5.2 這是自06年后最大的一次主干更新, 帶來(lái)的機(jī)制, 函數(shù)變化也是非常不錯(cuò)的

1. 去掉了全局性質(zhì)的setfenv/getfenv系列函數(shù), 語(yǔ)言層面提供_ENV語(yǔ)法糖, 這東西跟:操作符一樣, 只存在于編譯期.

官方建議自己實(shí)現(xiàn)module/require/package機(jī)制, 畢竟原生這套機(jī)制實(shí)現(xiàn)太弱智了..

2. 提供了無(wú)符號(hào)訪問(wèn)函數(shù)

3. 更多的lua api變化. 如果想兼容lua5.1的寫(xiě)法, 可以參考luabridge內(nèi)LuaHelpers.h的實(shí)現(xiàn)

以下是本人使用lua5.2實(shí)現(xiàn)的一套package機(jī)制, 供大家參考

package = {}
 
-- 讀取標(biāo)記
package.loaded = {}
 
-- 搜索路徑數(shù)組
package.path = {}
 
package.access =
{
    ["string"] = string,
    ["print"] = print,
    ["table"] = table,
    ["assert"] = assert,
    ["error"] = error,
    ["pairs"] = pairs,
    ["ipairs"] = ipairs,
    ["tonumber"] = tonumber,
    ["tostring"] = tostring,
    ["type"] = type,
    ["math"] = math,
}
 
local function getreadablepath( name, pathlist )
    for _, path in ipairs(pathlist) do
        
        local fullpath = path .. "/" .. name .. ".lua"
        local f = io.open( fullpath )
        if f then
            f:close()
            return fullpath
        end
    end
    
    return nil
    
end
 
 
function package.import( name )
 
    -- 已經(jīng)讀取的直接返回
    local existedenv = package.loaded[name]
    if existedenv then
        return existedenv
    end
    
    local access = package.access
    
    -- 設(shè)置訪問(wèn)控制權(quán)限
    local meta = 
    {
        __index = function( tab, key )
            
            -- 優(yōu)先取包的空間
            local v = rawget( tab, key )
            
            if v then
                return v
            end
            
            -- 找不到時(shí),從可訪問(wèn)的權(quán)限表中查找
            return access[key]             
            
        end,
    }
    
    -- 初始化一個(gè)包的全局環(huán)境, 并設(shè)置訪問(wèn)方法
    local env = setmetatable( {} , meta )
    
    --
    local readablepath = getreadablepath( name, package.path )
    
    if not readablepath then
        error(string.format("package '%s' not found \n%s", name, table.concat( package.path, "\n" ) ) )
    end
 
    local func = loadfile( readablepath, "bt",  env )
    
    if type(func) ~= "function" then
        return nil
    end
    
    -- 設(shè)置標(biāo)記
    package.loaded[name] = env
    
    -- 執(zhí)行全局空間
    func( )
    
    return env
end
 
package.path = {"E:/Download/t"}
local m = package.import "m"
 
m.foo()
以下是m模塊(m.lua)的內(nèi)容
 
 
 
function foo( )
    print("轉(zhuǎn)載注明: 戰(zhàn)魂小筑 http://m.shnenglu.com/sunicdavy", io )    
end

 

測(cè)試結(jié)果中, io打印出nil, 顯示權(quán)限已經(jīng)被控制住

本package設(shè)計(jì)比原生package更靈活, 更強(qiáng)大

posted on 2013-12-10 16:29 戰(zhàn)魂小筑 閱讀(4727) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 腳本技術(shù)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩亚洲另类| 日韩视频第一页| 91久久线看在观草草青青| 国产欧美三级| 好吊妞这里只有精品| 永久免费视频成人| 久久一区二区精品| 国产精品盗摄久久久| 欧美国产日韩a欧美在线观看| 久久久久综合网| 欧美+亚洲+精品+三区| 欧美韩日一区二区三区| 欧美日韩国产影院| 国产精品区一区二区三区| 国产一区二区三区久久| 亚洲高清免费在线| 亚洲一区免费| 久久亚洲影音av资源网| 91久久久久久久久| 亚洲色无码播放| 久久久精品一区二区三区| 欧美国产亚洲精品久久久8v| 国产精品每日更新在线播放网址| 在线播放中文一区| 亚洲一区精品视频| 亚洲国产精品热久久| 亚洲一级一区| 美女黄网久久| 国产欧美亚洲精品| 亚洲深夜av| 亚洲第一视频| 久久久精彩视频| 国产精品久久久久久久免费软件 | 亚洲片国产一区一级在线观看| 亚洲美女在线视频| 久久精品人人爽| 欧美先锋影音| 日韩视频一区二区| 美女视频一区免费观看| 亚洲欧美资源在线| 欧美日韩亚洲一区三区| 亚洲大胆人体视频| 久久经典综合| 亚洲在线中文字幕| 国产精品超碰97尤物18| 亚洲激情在线播放| 欧美成人久久| 久久香蕉精品| 国产精品自在线| 亚洲女ⅴideoshd黑人| 亚洲视频一二三| 欧美在线观看视频| 性久久久久久| 亚洲欧美日韩精品久久亚洲区 | 免费不卡在线观看av| 亚洲国产精品一区| 午夜一级在线看亚洲| 欧美精选在线| 99热这里只有精品8| 老**午夜毛片一区二区三区| 亚洲专区在线| 国产一区二区三区电影在线观看| 香蕉成人久久| 亚洲欧美激情在线视频| 国产精品乱码一区二三区小蝌蚪| 亚洲一区二区三区精品在线| 日韩视频在线免费| 国产精品久久久久久久第一福利| 亚洲欧美综合v| 午夜电影亚洲| 在线日韩一区二区| 亚洲国产精品电影| 国产精品国产自产拍高清av王其| 亚洲欧美一区二区激情| 亚洲一区二区三区高清| 一区二区三区我不卡| 亚洲国产精品欧美一二99| 欧美日韩一本到| 久久精品国产99国产精品| 六月丁香综合| 亚洲伊人一本大道中文字幕| 欧美一区二区三区精品| 亚洲人成在线免费观看| 亚洲一卡二卡三卡四卡五卡| 一区免费观看视频| 夜夜精品视频| 精品成人在线| 亚洲视频一区二区| 亚洲福利视频二区| 亚洲视频在线观看视频| 一区福利视频| 亚洲一区二区三区欧美 | 亚洲精品久久久久| 亚洲视频中文| 亚洲人成网站色ww在线| 性久久久久久久| 9人人澡人人爽人人精品| 欧美一区二区三区视频在线| 亚洲乱码一区二区| 欧美一区日韩一区| 亚洲午夜免费视频| 美女亚洲精品| 久久激情五月婷婷| 欧美三区视频| 国产日产欧美精品| 亚洲精品乱码久久久久| 韩国av一区二区三区在线观看| 最新亚洲电影| 激情亚洲一区二区三区四区| 在线视频你懂得一区二区三区| 亚洲高清av在线| 久久xxxx| 欧美一级午夜免费电影| 欧美日韩国产一区| 亚洲第一福利在线观看| 狠狠色综合网站久久久久久久| 亚洲一区二区在线观看视频| 99精品视频免费全部在线| 久久夜色精品亚洲噜噜国产mv | 亚洲精品日韩在线观看| 亚洲第一网站免费视频| 欧美一级成年大片在线观看| 亚洲午夜视频| 欧美日韩午夜剧场| 亚洲精品美女在线观看| 亚洲精品少妇| 蜜桃久久av| 欧美国产一区二区在线观看| 国模精品娜娜一二三区| 欧美一级艳片视频免费观看| 亚洲欧美一区二区在线观看| 欧美色综合天天久久综合精品| 亚洲国产精品嫩草影院| 日韩一级黄色大片| 欧美日韩国产免费| 夜夜爽99久久国产综合精品女不卡| 亚洲精品中文字| 欧美成人免费在线视频| 亚洲三级国产| 亚洲一区二区视频在线观看| 欧美日韩国产色综合一二三四 | 激情欧美日韩一区| 久久一区精品| 亚洲国产一区二区a毛片| 亚洲人成在线影院| 欧美日韩视频在线第一区| 一区二区三区av| 欧美一区二区高清| 国内精品亚洲| 女主播福利一区| 亚洲伦理在线观看| 香蕉久久a毛片| 怡红院av一区二区三区| 免费在线观看精品| 日韩视频在线一区二区| 欧美一区视频在线| 亚洲国产成人av| 欧美日韩一区二| 欧美在线一区二区| 亚洲国产精品一区二区www在线| 国产精品99久久久久久人| 国产欧美日韩精品一区| 美女精品网站| 中文成人激情娱乐网| 另类春色校园亚洲| 亚洲天堂成人| 在线欧美电影| 国产精品欧美在线| 免费在线日韩av| 午夜精品国产更新| 一区二区三区色| 国产亚洲美州欧州综合国| 久久夜色精品一区| 亚洲一区二区av电影| 亚洲风情亚aⅴ在线发布| 亚洲欧美三级在线| 亚洲精品国精品久久99热一| 国产精品网红福利| 欧美黑人在线播放| 久久精品国产亚洲aⅴ| 一区二区高清在线观看| 欧美电影电视剧在线观看| 欧美一区二区三区啪啪| 日韩视频在线免费观看| 狠狠色综合网站久久久久久久| 欧美特黄a级高清免费大片a级| 久久亚洲综合色| 欧美中文在线免费| 亚洲摸下面视频| 一区二区三区欧美日韩| 亚洲电影第三页| 免费在线观看一区二区| 久久精品国产欧美激情| 亚洲在线观看视频| 99在线|亚洲一区二区| 亚洲人成小说网站色在线| 在线不卡a资源高清| 国产一区二区三区自拍| 国产欧美一区二区精品秋霞影院| 欧美日韩亚洲另类|