最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量)

 更新時間:2014年12月28日 11:57:58   投稿:junjie  
這篇文章主要介紹了Lua中創(chuàng)建全局變量的小技巧(禁止未預(yù)期的全局變量),使用本文方法可以實現(xiàn)避免創(chuàng)建全局變量,在必須使用全局變量的情況下也給出了實現(xiàn)技巧,需要的朋友可以參考下

Lua 有一個特性就是默認定義的變量都是全局的。為了避免這一點,我們需要在定義變量時使用 local 關(guān)鍵字。

但難免會出現(xiàn)遺忘的情況,這時候出現(xiàn)的一些 bug 是很難查找的。所以我們可以采取一點小技巧,改變創(chuàng)建全局變量的方式。

復(fù)制代碼 代碼如下:

local __g = _G

-- export global variable
cc.exports = {}
setmetatable(cc.exports, {
    __newindex = function(_, name, value)
        rawset(__g, name, value)
    end,

    __index = function(_, name)
        return rawget(__g, name)
    end
})

-- disable create unexpected global variable
setmetatable(__g, {
    __newindex = function(_, name, value)
        local msg = "USE 'cc.exports.%s = value' INSTEAD OF SET GLOBAL VARIABLE"
        error(string.format(msg, name), 0)
    end
})

增加上面的代碼后,我們要再定義全局變量就會的得到一個錯誤信息。

但有時候全局變量是必須的,例如一些全局函數(shù)。我們可以使用新的定義方式:

復(fù)制代碼 代碼如下:

-- export global
cc.exports.MY_GLOBAL = "hello"

-- use global
print(MY_GLOBAL)
-- or
print(_G.MY_GLOBAL)
-- or
print(cc.exports.MY_GLOBAL)

-- delete global
cc.exports.MY_GLOBAL = nil

-- global function
local function test_function_()
end
cc.exports.test_function = test_function_

-- if you set global variable, get an error
INVALID_GLOBAL = "no"

相關(guān)文章

  • 實例講解Lua中pair和ipair的區(qū)別

    實例講解Lua中pair和ipair的區(qū)別

    這篇文章主要介紹了實例講解Lua中pair和ipair的區(qū)別,本文直接用實例代碼來講解pair和ipair的區(qū)別,需要的朋友可以參考下
    2015-04-04
  • Lua中table庫函數(shù)方法介紹

    Lua中table庫函數(shù)方法介紹

    這篇文章主要介紹了Lua中table庫函數(shù)方法介紹,本文講解了concat、insert、maxn、remove、sort、foreachi等方法,需要的朋友可以參考下
    2014-11-11
  • ubuntu 14.04下熟悉lua的語法

    ubuntu 14.04下熟悉lua的語法

    擺在本人目前來說最大的困難就是迅速熟悉Lua語言,后續(xù)的一切工作才有可能,所以必須現(xiàn)在電腦上安裝好Lua開發(fā)環(huán)境,之后program with Lua,我們先來熟悉下lua的語法吧。
    2015-04-04
  • lua中賦值類型代碼詳解

    lua中賦值類型代碼詳解

    本文主要給大家介紹了lua中解析復(fù)制類型代碼的過程,非常的細致全面,有需要的小伙伴可以參考下
    2015-05-05
  • LUA中的閉包(closure)淺析

    LUA中的閉包(closure)淺析

    這篇文章主要介紹了LUA中的閉包(closure)淺析,本文給出實例講解LUA中的閉包,需要的朋友可以參考下
    2015-02-02
  • 實現(xiàn)Lua中數(shù)據(jù)類型的源碼分享

    實現(xiàn)Lua中數(shù)據(jù)類型的源碼分享

    在Lua中有8種基礎(chǔ)類型,像其他動態(tài)語言一樣,在語言中沒有類型定義的語法,每個值都攜帶了它自身的類型信息。下面我們就來嘗試通過Lua 5.2.1的源碼來看類型的實現(xiàn)
    2015-04-04
  • Lua math.fmod使用時的小數(shù)問題

    Lua math.fmod使用時的小數(shù)問題

    這篇文章主要介紹了Lua math.fmod使用時的小數(shù)問題,math.fmod用于取模運算,使用小數(shù)時可能會遇到不可預(yù)料的結(jié)果,所以應(yīng)該避免使用小數(shù),需要的朋友可以參考下
    2015-06-06
  • Lua面向?qū)ο笾惡屠^承淺析

    Lua面向?qū)ο笾惡屠^承淺析

    這篇文章主要介紹了Lua面向?qū)ο笾惡屠^承淺析,本文講解了一些Lua面向?qū)ο蟮囊恍┲R,需要的朋友可以參考下
    2014-09-09
  • Lua檢測數(shù)組(tabble)中是否包含某個值

    Lua檢測數(shù)組(tabble)中是否包含某個值

    這篇文章主要介紹了Lua檢測數(shù)組(tabble)中是否包含某個值以及l(fā)ua 判斷一個字符是否存在某個數(shù)組兩個方法,需要的朋友可以參考下
    2015-05-05
  • Lua教程(三):表達式和語句

    Lua教程(三):表達式和語句

    這篇文章主要介紹了Lua教程(三):表達式和語句,本文講解了算術(shù)操作符、關(guān)系操作符、邏輯操作符、字符串連接、table構(gòu)造器、控制結(jié)構(gòu)等內(nèi)容,需要的朋友可以參考下
    2015-04-04

最新評論

民丰县| 凤冈县| 剑川县| 九江县| 元阳县| 海宁市| 潞西市| 木兰县| 固安县| 葵青区| 石阡县| 辉南县| 武夷山市| 武义县| 廉江市| 东山县| 祥云县| 神木县| 马关县| 涞水县| 本溪| 太湖县| 井冈山市| 天水市| 涿州市| 顺平县| 革吉县| 治多县| 大埔县| 芦溪县| 陵水| 厦门市| 石渠县| 蒙阴县| 星子县| 安义县| 湘乡市| 晋中市| 新宁县| 庆安县| 湟中县|