• <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-07-04來源:作者:點擊數: 標簽:
    Compilation, Execution, and Errors 前面我們介紹過dofile函數, 其實dofile的實現如下: function dofile (filename) local f = assert(loadfile(filename)) return f() end loadfile函數很靈活, 我們可以多次調用loadfile的返回結果來反復執行一段代碼. 但

    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

    老湿亚洲永久精品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>