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

戰魂小筑

討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

   :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

項目客戶端腳本全面升級lua5.2 這是自06年后最大的一次主干更新, 帶來的機制, 函數變化也是非常不錯的

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

官方建議自己實現module/require/package機制, 畢竟原生這套機制實現太弱智了..

2. 提供了無符號訪問函數

3. 更多的lua api變化. 如果想兼容lua5.1的寫法, 可以參考luabridge內LuaHelpers.h的實現

以下是本人使用lua5.2實現的一套package機制, 供大家參考

package = {}
 
-- 讀取標記
package.loaded = {}
 
-- 搜索路徑數組
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 )
 
    -- 已經讀取的直接返回
    local existedenv = package.loaded[name]
    if existedenv then
        return existedenv
    end
    
    local access = package.access
    
    -- 設置訪問控制權限
    local meta = 
    {
        __index = function( tab, key )
            
            -- 優先取包的空間
            local v = rawget( tab, key )
            
            if v then
                return v
            end
            
            -- 找不到時,從可訪問的權限表中查找
            return access[key]             
            
        end,
    }
    
    -- 初始化一個包的全局環境, 并設置訪問方法
    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
    
    -- 設置標記
    package.loaded[name] = env
    
    -- 執行全局空間
    func( )
    
    return env
end
 
package.path = {"E:/Download/t"}
local m = package.import "m"
 
m.foo()
以下是m模塊(m.lua)的內容
 
 
 
function foo( )
    print("轉載注明: 戰魂小筑 http://m.shnenglu.com/sunicdavy", io )    
end

 

測試結果中, io打印出nil, 顯示權限已經被控制住

本package設計比原生package更靈活, 更強大

posted on 2013-12-10 16:29 戰魂小筑 閱讀(4737) 評論(0)  編輯 收藏 引用 所屬分類: 腳本技術
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久在线视频| 亚洲区第一页| 精品动漫3d一区二区三区| 国产精品一区二区在线观看网站 | 麻豆9191精品国产| 美国十次成人| 欧美激情亚洲一区| 亚洲免费高清| 亚洲欧美日韩成人高清在线一区| 一区二区三区三区在线| 午夜伦欧美伦电影理论片| 欧美一级日韩一级| 久久久久国产精品厨房| 欧美成人在线网站| 欧美午夜不卡影院在线观看完整版免费 | 欧美在线观看视频一区二区三区| 亚洲影视在线| 久久久久www| 最近看过的日韩成人| 日韩视频一区二区三区| 亚洲欧美日韩区| 欧美成在线视频| 国产精品免费区二区三区观看| 在线成人亚洲| 亚洲综合不卡| 亚洲国产欧美在线| 亚洲欧美一区二区三区在线| 欧美777四色影视在线| 国产酒店精品激情| 日韩一区二区精品在线观看| 久久精品国产综合精品| 亚洲级视频在线观看免费1级| 午夜在线观看免费一区| 欧美激情在线免费观看| 好吊色欧美一区二区三区四区| 一区二区三区精品| 欧美成人一品| 久久精品官网| 国产亚洲精品7777| 亚洲视频欧美在线| 91久久精品美女高潮| 久久久久久久久久久成人| 国产精品国产三级国产专区53| 亚洲国产影院| 米奇777在线欧美播放| 性色av一区二区怡红| 国产精品美女久久久久av超清| 亚洲乱码国产乱码精品精可以看 | 亚洲欧美变态国产另类| 男人插女人欧美| 欧美一区二区三区久久精品| 国产精品久久久久久久久果冻传媒| 欧美精品粉嫩高潮一区二区 | 欧美成人一区二区在线 | 久久99在线观看| 国产欧美日韩视频一区二区| 亚洲一二三区在线| av成人动漫| 国产精品美女久久福利网站| 亚洲一区二区精品在线观看| 亚洲精品一区二区三区不| 欧美成人性网| 日韩一区二区精品在线观看| 亚洲激情影视| 欧美日韩另类在线| 亚洲天堂成人在线观看| 99视频精品| 欧美亚一区二区| 欧美一区二区三区视频在线| 午夜在线成人av| 亚洲电影成人| 亚洲伦理在线观看| 国产精品久久久久久户外露出 | 亚洲久久视频| 日韩视频精品| 国产伦一区二区三区色一情| 久久久999成人| 六十路精品视频| 一区二区欧美视频| 亚洲一二三区在线观看| 狠狠爱www人成狠狠爱综合网| 欧美风情在线观看| 欧美久久久久久久久久| 亚洲综合色噜噜狠狠| 亚洲欧美日韩精品久久久| 亚洲国产精品毛片| 99天天综合性| 一区二区视频免费在线观看| 亚洲第一区在线观看| 国产精品va在线| 免费中文日韩| 国产精品嫩草99av在线| 久久久久久尹人网香蕉| 欧美日韩高清在线播放| 欧美在线播放| 欧美国产亚洲精品久久久8v| 久久国产精品高清| 欧美mv日韩mv国产网站| 午夜在线观看免费一区| 欧美成人官网二区| 欧美主播一区二区三区美女 久久精品人 | 久久精品国产久精国产一老狼 | 国产日韩一区二区三区在线播放 | 亚洲国产高清自拍| 国产精品国产三级国产aⅴ浪潮| 久久精品一级爱片| 欧美精品一区二区久久婷婷| 在线视频一区观看| 黄色一区三区| 这里只有精品电影| 亚洲欧洲日产国产综合网| 亚洲欧美乱综合| 99精品欧美一区二区三区| 久久超碰97人人做人人爱| 亚洲午夜电影| 欧美人成免费网站| 美女福利精品视频| 国产精品中文在线| 99日韩精品| 亚洲精品亚洲人成人网| 久久全国免费视频| 久久精品国产第一区二区三区最新章节 | 国产日韩欧美二区| 一本一本a久久| 亚洲精品色图| 欧美a级一区二区| 久久亚洲综合色| 国产一区二区欧美| 亚洲欧美精品在线| 校园春色综合网| 国产乱子伦一区二区三区国色天香| 99国产成+人+综合+亚洲欧美| 亚洲激情六月丁香| 女仆av观看一区| 亚洲高清资源综合久久精品| 亚洲国产一二三| 久久夜色精品国产噜噜av| 麻豆国产精品一区二区三区| 国产性天天综合网| 欧美一区二视频| 久久久国产成人精品| 国产亚洲视频在线| 久久av一区| 免费日韩视频| 在线欧美一区| 免费在线看成人av| 91久久在线播放| 亚洲特色特黄| 国产欧美日韩综合一区在线观看 | 老司机精品福利视频| 久久亚洲不卡| 在线观看成人av电影| 欧美国产一区二区| 亚洲精品一二三区| 小黄鸭视频精品导航| 黄色av一区| 免费观看成人| 中文在线一区| 欧美激情中文字幕一区二区| 欧美日韩中文字幕在线| 一区二区三区国产| 午夜国产精品视频免费体验区| 国产精品v日韩精品v欧美精品网站| 亚洲视频二区| 欧美成人视屏| 午夜精品福利视频| 国产一区二区剧情av在线| 久久亚洲精品视频| 99视频超级精品| 久久综合色婷婷| 99在线精品视频在线观看| 国产欧美大片| 欧美激情视频免费观看| 亚洲自拍偷拍福利| 欧美激情精品| 久久久久久噜噜噜久久久精品 | 欧美一区二区福利在线| 伊人久久亚洲美女图片| 国产精品av免费在线观看| 久久精品在线免费观看| 99re视频这里只有精品| 看片网站欧美日韩| 亚洲性色视频| 亚洲激情视频在线观看| 国产日产欧美a一级在线| 欧美精品日韩三级| 两个人的视频www国产精品| 亚洲视频在线观看网站| 亚洲精品1234| 蜜桃久久精品乱码一区二区| 亚洲砖区区免费| 日韩一级在线| 亚洲国产99精品国自产| 国产日韩亚洲| 国产精品日韩欧美| 欧美日韩亚洲一区二区三区四区| 美女精品视频一区| 久久精品五月| 欧美在线亚洲| 亚洲欧美一区二区三区久久|