如何在Lua中定义变量以及如何在Cocos2d-x中的其他Lua脚本中调用它

如何在Lua中定义变量以及如何在Cocos2d-x中的其他Lua脚本中调用它,lua,cocos2d-x,Lua,Cocos2d X,如何在Lua中定义variableconstant,以及如何在Cocos2d-x中的其他Lua脚本中调用它 以我的方式: 梅因·卢阿 卢阿广场酒店 function Square:getConstant() return 10 end 还有其他更优雅的方式吗?任何建议都将不胜感激。您可以将其设置为全局变量: constant = r:getConstant() 但这个变量不是常数。Lua不知道不可变/只读/常量变量的概念 使用Lua表的元表有一些技巧可以防止值发生更改,但这需要值位于

如何在Lua中定义variableconstant,以及如何在Cocos2d-x中的其他Lua脚本中调用它

以我的方式: 梅因·卢阿

卢阿广场酒店

function Square:getConstant()
    return 10
end

还有其他更优雅的方式吗?任何建议都将不胜感激。

您可以将其设置为全局变量:

constant = r:getConstant()
但这个变量不是常数。Lua不知道不可变/只读/常量变量的概念

使用Lua表的元表有一些技巧可以防止值发生更改,但这需要值位于表中,并且不能防止表被更改(即设置为nil或替换其元表)

简单地使用返回常量值的函数是确保值常量的更简单方法

我过去也做过的是使用标记常量值的符号,例如:

_constant = 10
local _localConstant = 11
前缀表示变量为常数。或者,如果宏是C/C++或常见框架(如DBL_EPSILON或M_PI_2)中的已知常量,则定义宏的ALL-CAPS样式的类似方法也可以很好地工作。这只是对程序员的提醒

最后是const表,它是一个全局表,定义了一些假定为常量的值:

const = {thisIsTen = 10, thatIsEleven = 11}
使用该表可以清楚地表明这些是常数:

result = 100 * const.thisIsTen

您可以将其设置为全局变量:

constant = r:getConstant()
但这个变量不是常数。Lua不知道不可变/只读/常量变量的概念

使用Lua表的元表有一些技巧可以防止值发生更改,但这需要值位于表中,并且不能防止表被更改(即设置为nil或替换其元表)

简单地使用返回常量值的函数是确保值常量的更简单方法

我过去也做过的是使用标记常量值的符号,例如:

_constant = 10
local _localConstant = 11
前缀表示变量为常数。或者,如果宏是C/C++或常见框架(如DBL_EPSILON或M_PI_2)中的已知常量,则定义宏的ALL-CAPS样式的类似方法也可以很好地工作。这只是对程序员的提醒

最后是const表,它是一个全局表,定义了一些假定为常量的值:

const = {thisIsTen = 10, thatIsEleven = 11}
使用该表可以清楚地表明这些是常数:

result = 100 * const.thisIsTen

如果要查找只读且无法更改的常量常量值,则需要为其创建一个已有的函数。您还必须知道,只有通过创建返回基本类型number、boolean、nil和string时,lua才会按值而不是通过引用返回它们

以下是对您的功能的替换:

卢阿广场酒店

Square = {}
Square.__index = Square


local _const = 10

function Square:GetConst()
    local const = _const
    return const
end

-- Test function
function Square:MoveUp()
    _const = _const + 2
end

return Square
梅因·卢阿

local sr = Require("src/Square")

print(sr:GetConst()) -- 10

local plus = sr:GetConst() + 4

print(sr:GetConst(), plus) -- 10     14

sr:MoveUp()

print(sr:GetConst()) -- 12

还需要注意的是,正方形可以更改为推荐的本地函数,因此在这种情况下,下次创建对象时不会有任何问题。

如果您正在寻找只读且无法更改的常量值,则需要为其创建一个已有的函数。您还必须知道,只有通过创建返回基本类型number、boolean、nil和string时,lua才会按值而不是通过引用返回它们

以下是对您的功能的替换:

卢阿广场酒店

Square = {}
Square.__index = Square


local _const = 10

function Square:GetConst()
    local const = _const
    return const
end

-- Test function
function Square:MoveUp()
    _const = _const + 2
end

return Square
梅因·卢阿

local sr = Require("src/Square")

print(sr:GetConst()) -- 10

local plus = sr:GetConst() + 4

print(sr:GetConst(), plus) -- 10     14

sr:MoveUp()

print(sr:GetConst()) -- 12

还需要注意的是,平方可以更改为推荐的局部函数,因此在这种情况下,下次创建对象时不会出现任何问题。

Lua不知道常量和变量。如何调用常量还不清楚,您的意思是如何访问变量吗?除非变量声明为“local”,否则可以从任何脚本访问它。函数也是如此。假设两个Lua脚本都在同一个Lua堆栈上运行。@LearnCos2D我已经编辑了我的帖子,谢谢你的热情。Lua不知道常量和常量变量。如何调用常量还不清楚,您的意思是如何访问变量吗?除非变量声明为“local”,否则可以从任何脚本访问它。函数也是如此。假设两个Lua脚本都在同一个Lua堆栈上运行。@LearnCos2D我已经编辑了我的文章,感谢您的热情支持。