math.random()
开箱即用,但是如果我将math
设置为其他内容,则会破坏
local math = 1 + 1 -- set math to something else
math.random() -- breaks
在设置math.random()
时,有什么方法可以使local math = 1 + 1
仍然工作?
我有一堆带有点标记功能的模块,例如coord.get()
或offset.get()
但是然后像coord
和offset
这样的基本词就不能用于变量名了,这很烦人
答案 0 :(得分:2)
您始终可以再次要求该模块:
require("math").random()
由于模块已经被加载,所以这不是很昂贵。
答案 1 :(得分:1)
使用正确编写的模块,您可以local coords = require("coord")
这将创建一个局部变量coords
,以便在以后的局部定义中为coord
着色时,您仍然可以通过coords
访问这些函数。如果模块不返回它创建的表,而仅在全局范围内创建表,则该表将不起作用。
如果math.random local random = math.random
在您的local math
变量之前定义,则可以使用相同的方法。
local random = math.random
local math = 1 + 1
print(random(math))
或者,您可以将整个lib放入这样的局部变量中:
local maths = math
local math = 1 + 1
print(maths.random(math))
这表示一个名为math
的数字变量不太可能被很好地命名。给定您的示例,像product
这样的名称会更合适。