USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE" - pxqwxl/myLearnPoject GitHub Wiki

USE " cc.exports.* = value " INSTEAD OF SET GLOBAL VARIABLE" 2016年11月19日 16:58:13 暴力书圣 阅读数:1849 原文地址:http://blog.csdn.net/dl15600383645/article/details/46581835

Cocos2d-x 3.5的lua项目生成后,变成了MVC模式,并且,加入了一个全局变量的检测功能。也就是说,你不小心用了全局变量,他会提示你出错!

比如

local temp = 1

temp = 10

print(temp) 1 2 3 4 5 1 2 3 4 5 你写成了

local temp = 1

tepm = 10 --这里写错了

print(temp) 1 2 3 4 5 1 2 3 4 5 然后,print结果就会不同,同时你还会创建一个 全局的 tepm 永远不会被释放。这种问题,在lua中很容易遇到(虽然现在有代码提示 还是不太容易出现,但是谁说的准呢!)。 所以,C2d加入了一个全局命名空间的检测,通过setmetatable的方式。该函数在

src/cocos/framework/init.lua

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

if CC_DISABLE_GLOBAL then cc.disable_global() end 1 2 3

⚠️ **GitHub.com Fallback** ⚠️