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

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

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

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

但難免會(huì)出現(xiàn)遺忘的情況,這時(shí)候出現(xiàn)的一些 bug 是很難查找的。所以我們可以采取一點(diǎn)小技巧,改變創(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
})

增加上面的代碼后,我們要再定義全局變量就會(huì)的得到一個(gè)錯(cuò)誤信息。

但有時(shí)候全局變量是必須的,例如一些全局函數(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)文章

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

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

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

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

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

    ubuntu 14.04下熟悉lua的語(yǔ)法

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

    lua中賦值類型代碼詳解

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

    LUA中的閉包(closure)淺析

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

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

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

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

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

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

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

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

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

    Lua教程(三):表達(dá)式和語(yǔ)句

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

最新評(píng)論

齐齐哈尔市| 宁都县| 平顺县| 天全县| 克东县| 壶关县| 城步| 武山县| 武平县| 周口市| 蛟河市| 新乐市| 吉林市| 大名县| 道孚县| 定日县| 广河县| 普格县| 中牟县| 潜山县| 济南市| 饶阳县| 宝坻区| 张家口市| 和平区| 新民市| 甘泉县| 阳新县| 原阳县| 静海县| 连江县| 垣曲县| 安岳县| 平定县| 泸西县| 中卫市| 阿坝县| 中阳县| 潮州市| 中牟县| 融水|