• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    LUA學習筆記3 - Compilation, Execution, and Errors

    發布: 2007-7-04 20:48 | 作者: admin | 來源:  網友評論 | 查看: 20次 | 進入軟件測試論壇討論

    領測軟件測試網

    Compilation, Execution, and Errors
    前面我們介紹過dofile函數, 其實dofile的實現如下:
        function dofile (filename)
          local f = assert(loadfile(filename))
          return f()
        end
    loadfile函數很靈活, 我們可以多次調用loadfile的返回結果來反復執行一段代碼. 但是如果出錯loadfile將返回nil和一個錯誤提示信息.
    loadstring功能和loadfile類似, 參數為要直接處理的script內容.
        f = loadstring("i = i + 1")
        i = 0
        f(); print(i)   --> 1
        f(); print(i)   --> 2

    loadstring載入后相當于多了一個匿名函數定義,
    -- file `foo.lua'
        function foo (x)
          print(x)
        end

        f = loadfile("foo.lua")
        f()           -- defines `foo'
        foo("ok")     --> ok

    你也可以使用loadstring(s)()達到同樣的效果.
    使用loadstring時所用的變量都位于全局空間:
        local i = 0
        f = loadstring("i = i + 1")      -- global i
        g = function () i = i + 1 end    --local i

    The require Function
    Lua提供了一個函數require用來載入庫. require作的工作有些像dofile但有兩點重要不同:require會在path指定的路徑搜索文件, 而且require可以知道一個文件是否已被執行, 如果已被執行過, 那么不會再次被執行.

    Lua使用的path和許多平臺使用的標準path有些不同, 許多平臺使用的path是一系列含有目標文件的文件夾,但是Lua不一樣. Lua使用的ANSI C語言并沒有path這樣的概念, 因此Lua使用的是字符串匹配的方式. '?'代表文件名, 以';'隔開.
    ?;?.lua;c:\windows\?;/usr/local/lua/?/?.lua
    如果調用 require 'lili', 那么會嘗試打開下列文件:
    lili
    lili.lua
    c:\windows\lili
    /usr/local/lua/lili/lili.lua
    require會首先檢查全局變量LUA_PATH, 如果LUA_PATH是一個字符串類型, 那么使用它的值. 否則檢查環境變量LUA_PATH, 如果以上值都不存在, 那么使用一個定值, 這個值可以在編譯LUA的時候方便的加以改變.

    另一個require的主要功能是避免一個文件被執行多次. 為了實現這個目的, 它保存了一個table用來記錄所有已經載入的文件. 注意, 這里的key值并不是真實的文件名而是一個虛擬文件名. 所以
    require "foo"
    require "foo.lua"
    path是"?;?.lua", 那么foo.lua會被載入兩次. 可以通過全局變量 _LOADED 訪問到這個表的值.
    path中可以含有固定文件的值, 例如:
    ?;?.lua;/usr/local/default.lua
    在這種情況下, 如果 reqire 不能找到其他的匹配, 那么就使用/usr/local/default.lua.

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>